【问题标题】:How can I redirect users to different pages based on session data in asp如何根据asp中的会话数据将用户重定向到不同的页面
【发布时间】:2015-03-16 16:50:33
【问题描述】:
protected void btnLogin_Click(object sender, EventArgs e)
{
    Member E = new Member();
    E = E.Login(txtEmail.Text, txtPassword.Text);
    Session["user"] = E;
    if (Session["user"] != null)
    {
        E = (Member)Session["user"];
        if (E.UserType == "Doctor")
        {
            Response.Redirect("Donate.aspx");
        }
        else if (E.UserType == "admin")
        {
            Response.Redirect("admin.aspx");
        }
        else
        {
            Response.Redirect("user.aspx");
        }
    }
    else

    {
        lblMessage.ForeColor = System.Drawing.Color.Red;
        lblMessage.Text = "Invalid Email / password";
    }    
}
}

这是登录

public Member Login(string Email, string Password)
{
    string constr = "Data Source = YAZAN-PC ; initial catalog = Aged ; user = sa; pwd = yazan7;";
    SqlConnection conn = new SqlConnection(constr);
    SqlDataAdapter da = new SqlDataAdapter("Authenticate", conn);
    da.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure;
    da.SelectCommand.Parameters.AddWithValue("@Email", Email);
    da.SelectCommand.Parameters.AddWithValue("@Password", Password);
    DataTable dt = new DataTable();
    conn.Open();
    da.Fill(dt);
    conn.Close();
    if (dt.Rows.Count > 0)
        return new Member
ID = int.Parse(dt.Rows[0]["ID"].ToString()),
            FName = dt.Rows[0]["FName"].ToString(),
            LName = dt.Rows[0]["LName"].ToString(),
            Email = dt.Rows[0]["Email"].ToString(),         
            Gender = dt.Rows[0]["Gender"].ToString(),
            Password = dt.Rows[0]["Password"].ToString(),
            RePassword = dt.Rows[0]["RePassword"].ToString(),
            UserType = dt.Rows[0]["UserType"].ToString(),
            BirthDate = dt.Rows[0]["BirthDate"].ToString(),

这是班级

我有 3 个用户 医生 行政 家庭 我需要用户登录时 如果他是医生重定向到页面 (doctor.aspx) 否则 如果他是管理员重定向到页面 (admin.aspx) 如何使用会话来做到这一点????

【问题讨论】:

  • 你在会话中存储了什么?
  • 请显示一些代码,说明您当前如何在用户登录时返回有关用户的信息。
  • 我,但是代码会显示出来,请
  • 请出示您的 Login() 代码。
  • 我在我的登录页面和我的班级@sr28 上添加代码

标签: asp.net session redirect response.redirect


【解决方案1】:

定义一个登录类..

class dcLogin
{
public id string{get;set;}
public name string{get;set;}
public type string{get;set;}
}

当用户登录时.. 设置

dcLogin  objLog=new dcLogin(); 
objLog.id=userid; objLog.name=username; 
objLog.type='usertype'--admin/doctor/user

session["loginuser"]=objLog;

现在您可以随时检查用户类型。

dcLogin  objLog=(dcLogin)session["loginuser"];
if(objLog.type=="admin")
{
response.redirect("admin.aspx");
}

编辑2: 登录后创建一个公共主页。

loginhome.aspx

protected void page_lod()
{
 if(session["user"]!=null)
 {
   Member E=(Member)session["user"];
if(E.UserType =="Doctor")
{
  response.rediter("doctor.aspx");
}
else if(E.UserType =="admin")
{
  response.rediter("admin.aspx");
}
else
{
 response.rediter("user.aspx");
} 
}
}

【讨论】:

  • @YazanTamimi 见 Edit2
  • 谢谢你,我会测试它,我会告诉我会发生什么再次感谢
  • 它;给我错误它说对象引用未设置为对象的实例。它给了我 if 语句的亮点
  • 我必须在页面加载或按钮点击功能上编写此代码??
  • 你使用 session["user"] 吗?我在我的代码中错过了它。
【解决方案2】:

根据您在会话中存储的内容,您可以使用它来检索有关用户的数据。由于您没有提供任何代码或逻辑来说明您希望如何执行这些操作,因此我将猜测一下。

  1. 从会话中检索值(说用户 ID)
  2. 使用会话中的 id 从数据库或列表中获取用户数据
  3. 根据返回的数据,获取“等级”/“特权”值,比如医生是 1,家庭是 2,用户是 3
  4. 对排名进行切换,根据排名是 1、2 还是 3,进行相应的重定向。

希望对你有所帮助。

【讨论】:

    【解决方案3】:

    好的,您收到错误是因为会话为空。我不敢相信您的登录代码会编译,因为您在“返回新成员”行后跟属性设置行不正确。但是,除此之外,我建议您的问题是由您的登录方法引起的。

    我会这样写:

    public Member Login(string Email, string Password)
    {
        string constr = "Data Source = YAZAN-PC ; initial catalog = Aged ; user = sa; pwd = yazan7;";
    
        DataTable dt = new DataTable();
        using(SqlConnection conn = new SqlConnection(constr))
        {
            SqlDataAdapter da = new SqlDataAdapter("Authenticate", conn);
            da.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure;
            da.SelectCommand.Parameters.AddWithValue("@Email", Email);
            da.SelectCommand.Parameters.AddWithValue("@Password", Password);
            da.Fill(dt);
        }
    
        Member m = new Member();
    
        if (dt.Rows.Count > 0)
        {
            //Set member properties
            m.ID = int.Parse(dt.Rows[0]["ID"].ToString());
            m.FName = dt.Rows[0]["FName"].ToString();
            m.LName = dt.Rows[0]["LName"].ToString();
            m.Email = dt.Rows[0]["Email"].ToString();         
            m.Gender = dt.Rows[0]["Gender"].ToString();
            m.Password = dt.Rows[0]["Password"].ToString();
            m.RePassword = dt.Rows[0]["RePassword"].ToString();
            m.UserType = dt.Rows[0]["UserType"].ToString();
            m.BirthDate = dt.Rows[0]["BirthDate"].ToString();
    
            //add any other properties needed to be filled.
        }
    
        return m;
    }
    

    然后,您将根据当前代码使用“用户类型”。根据您可以为“用户类型”设置的值,取决于您检查的内容。如果您有像 'Doctor' 这样的值,那么您可能需要确保您正在修剪空白并且您的检查不区分大小写,例如:

    if (E.UserType.Trim().Equals("Doctor", StringComparison.InvariantCultureIgnoreCase))
    {
        Response.Redirect("Donate.aspx");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      • 2012-06-18
      • 1970-01-01
      相关资源
      最近更新 更多