输入正确的密码后创建会话

时间:2016-12-14 12:45:24

标签: c# asp.net

我只是制作一个非常简单的密码输入表格:

cmd.Parameters.AddWithValue("@password", TextBox2.Text); 

SqlDataAdapter sda = new SqlDataAdapter(cmd);  
DataTable dt = new DataTable();  
sda.Fill(dt);

con.Open();  
int i = cmd.ExecuteNonQuery();  
con.Close();  

if (dt.Rows.Count > 0)
{  
     Response.Redirect("/login/system.aspx");
}
else
{  
     Label1.Text = "Your password is incorrect!";  
     Label1.ForeColor = System.Drawing.Color.Red;        
}  

如果行数大于0,我需要进行会话。

类似的东西:

Session["LoggedInOk"] = "";

但是,我不应该将TextBox2.Text值(密码)设置为会话吗?

如何创建会话,以便在他们登陆密码访问页面时,会重定向,但不会将会话设置为密码。

我可以在""?

内创建任何文字

然后在密码访问页面上的内容类似于?:

if(Session["LoggedInOk"] == null)
{
    Response.Redirect("/login/default.aspx");
}                   
else
{
    Session["LoggedInOk"] = true; 
}

4 个答案:

答案 0 :(得分:2)

使用会话进行授权或身份验证检查不是Session的设计目标,并且被认为是不好的做法,更不用说不安全了。使用现有的身份验证/授权框架,如ASP.NET Identity或内置的成员资格提供程序(后者已基本上被前者替换)。这些内置的检查和机制可自动重定向未授权的请求,以及您可以调用以检查授权或角色检查的方法。

基于您询问存储密码的位置/事实,我还假设您正在推出自定义身份验证/授权解决方案。同样,不要这样做,而是使用现有的解决方案。这比你可能构建的任何东西都更安全(包括我自己)。

Introduction to ASP.NET Identity

How to: Use the ASP.NET Membership Provider

答案 1 :(得分:1)

您几乎可以在会话中存储任何数据类型。您只需要在使用它时将其强制转换为原始数据类型。

let responseDictionary:[String:Any] = WebAPIHelper.postMethodRequest(parameters: requestParameters, methodName: "/User/SendEmail")

答案 2 :(得分:1)

当返回的行大于0时,您可以设置Session,这意味着密码和用户名都正确,并且从表中找到了行:

if (dt.Rows.Count > 0) {
     Session["LoggedIn"] = true;  
     Response.Redirect("/login/system.aspx");   

}

并在该页面中检查它是否为空:

if(Session["LoggedIn"] == null) {
    Response.Redirect("/login/default.aspx");
}

答案 3 :(得分:1)

建议您不要在会话中存储密码。一旦您有效用户凭据并确认您可以设置用户有效的会话。

Session["LoggedInOk"]=true;//Set the session 

在密码访问页面上,您可以检查会话是否为空。

if(Session["LoggedInOk"] == null)
{
    Response.Redirect("/login/default.aspx");
}

同时确保用户注销后清除会话。

Session["LoggedInOk"]=null; //set session null once user click on logout