2008-11-12 141 views
2

我使用Forms Authentication创建了一个自定义登录页面,并使用sQL DB来存储用户数据。我能够从用户名创建一个会话变量,但是想知道是否可以拉出一个单独的字段并基于此创建一个会话变量。我希望会话变量基于SalesNumber一个5位十进制字段。请给我任何意见或建议。来自SQL DB的Asp.net会话变量

cmd = new SqlCommand("Select pwd,SalesNumber from users where [email protected]", conn); 
cmd.Parameters.Add("@userName", System.Data.SqlDbType.VarChar, 25); 
cmd.Parameters["@userName"].Value = userName; 
Session["userName"] = userName; 

感谢....

回答

1

也请记住,你可以存储整个对象在会议上,而不是独立变量:

UserObject user = DAL.GetUserObject(userName); 
Session["CurrentUser"] = user; 
// Later... 
UserObject user = Session["CurrentUser"] as UserObject; 
// ... 

要添加上,你可以在一个妮把它包ce物业:

private UserObject CurrentUser 
{ 
    get 
    { 
      return this.Session["CurrentUser"] as UserObject; 
    } 
    set 
    { 
      this.Session["CurrentUser"] = value; 
    } 
} 
1

当你从你的数据库查询SalesNumber,只需使用

Session["SalesNumber"] = <the value of the SalesNumber column from the query> 

还是有别的东西我失踪的问题... ?

1
在DAL

只需创建一个像你登录序列:

public bool LoginUser(String username, String password) 
{ 
    bool r = false; 
    using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConn"].ConnectionString)) 
    { 
     using(SqlCommand cm = new SqlCommand()) 
     { 
      cm.Connection = cn; 
      cm.CommandType = CommandType.Text; 
      cm.CommandText = "SELECT Name, SalesNumber FROM users WHERE uname = @username AND pwd = @password;"; 
      cm.Parameters.AddWithValue("@username", username); 
      cm.Parameters.AddWithValue("@password", password); 

      cn.Open(); 
      SqlDataReader dr = cm.ExecuteReader(); 

      if (dr.HasRows) 
      { 
       // user exists 
       HttpContext.Current.Session["SalesNumber"] = dr["SalesNumber"].ToString(); 
       HttpContext.Current.Session["Username"] = username; 
       HttpContext.Current.Session["Name"] = dr["Name"].ToString(); 

       r = true; 
      } 
      else 
      { 
       // Clear all sessions 
       HttpContext.Current.Session["SalesNumber"] = ""; 
       HttpContext.Current.Session["Username"] = ""; 
       HttpContext.Current.Session["Name"] = ""; 
      } 
     } 
    } 
    return r; 
} 

从您的代码,在登录按钮单击事件只是增加

if (dalLogin.LoginUser(TextBoxUsername.Text.Trim(), TextBoxPassword.text.Trim())) 
{ 
    // User logged in sucessfuly 
    // all sessions are available 
    Response.Redirect("homepage.aspx"); 
} 
else 
{ 
    // Username and password did not match! show error 
}