asp.net项目中会话数据的位置

时间:2013-03-12 11:07:26

标签: asp.net authentication session-variables

我在asp.net做一个项目。它使用登录功能,我用2个文本框和一个按钮实现。没有什么花哨。

所以现在我必须区分哪种用户登录,因为有不同的角色,如admin,user,guest ...

所以我需要知道的是Session [“UserAuthentication”]是什么以及它做什么...我认为我可以将这些数据添加到一个额外的表来记录所有会话...这是一个很好的方法?

这是我的身份验证方法:

protected void Button1_Click(object sender, EventArgs e)
        {
            string username = tbUsername.Text;
            string pwd = tbPassword.Text;
            string s;
            s = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection con = new SqlConnection(s);
            con.Open();
            string sqlUserName;
            sqlUserName = "SELECT Username, UserPassword FROM Benutzer WHERE Username ='" + username + "' AND UserPassword ='" + pwd + "'";
            SqlCommand cmd = new SqlCommand(sqlUserName, con);
            string CurrentName;
            CurrentName = (string)cmd.ExecuteScalar();
            if (CurrentName != null)
            {
                Session["UserAuthentication"] = username;
                Session.Timeout = 1;
                Response.Redirect("Default.aspx");
            }
            else
            {
                lblStatus.ForeColor = System.Drawing.Color.Red;
                lblStatus.Text = "Benuztername/Password ungültig!";                               
            }
        }

1 个答案:

答案 0 :(得分:2)

  

Session["UserAuthentication"]是一个变量,它将在该特定当前用户的所有页面中全局保存username的值。

是的,您可以在SQL Table中添加数据。为此,您需要在web.config文件中添加此内容。

<sessionState mode="SQLServer" sqlConnectionString="data source=yourDataSource;user id=username;password=password" cookieless="false" timeout="20" />
  

如果您想知道变量的Database存储在SessionId中的位置,以防万一,您需要在服务器上安装ASPState Database。并如上所述在web.config文件上相应地传递连接字符串。

     

如何添加数据库ASPState?
  1.转到此路径: C:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319
  2.您需要在script中找到一个名为InstallSqlState.sql SQL server的{​​{1}}。