我使用表单身份验证创建了一个自定义登录页面,并使用sQL DB存储用户数据。我能够从用户名创建一个会话变量,但想知道是否可以拉出一个单独的字段并根据它创建一个会话变量。我希望会话变量基于SalesNumber一个5位十进制字段。请给我任何意见或建议。
cmd = new SqlCommand("Select pwd,SalesNumber from users where uname=@userName", conn);
cmd.Parameters.Add("@userName", System.Data.SqlDbType.VarChar, 25);
cmd.Parameters["@userName"].Value = userName;
Session["userName"] = userName;
...谢谢
答案 0 :(得分:1)
从数据库查询中获取SalesNumber时,只需使用
Session["SalesNumber"] = <the value of the SalesNumber column from the query>
或者在问题中我还缺少其他东西......?
答案 1 :(得分:1)
只需创建您的登录序列,如:
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
}
答案 2 :(得分:1)
另请注意,您可以在会话中存储整个对象,而不是单独的变量:
UserObject user = DAL.GetUserObject(userName);
Session["CurrentUser"] = user;
// Later...
UserObject user = Session["CurrentUser"] as UserObject;
// ...
要添加,您可以将其包装在一个不错的属性中:
private UserObject CurrentUser
{
get
{
return this.Session["CurrentUser"] as UserObject;
}
set
{
this.Session["CurrentUser"] = value;
}
}