Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 输入正确密码后创建会话_C#_Asp.net - Fatal编程技术网

C# 输入正确密码后创建会话

C# 输入正确密码后创建会话,c#,asp.net,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

我正在制作一个非常简单的密码输入表单:

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; 
}

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

//string
Session["LoggedInOk"] = "loginOk";
string value = Session["LoggedInOk"].ToString();

//bool
Session["LoggedInOk"] = true;
bool value = Session["LoggedInOk"] as bool;

//class
Book book = new Book();
Session["LoggedInOk"] = book;
Book value = Session["LoggedInOk"] as Book;

//datatable
DataTable table = new DataTable();
Session["LoggedInOk"] = table;
DataTable value = Session["LoggedInOk"] as DataTable;

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

//string
Session["LoggedInOk"] = "loginOk";
string value = Session["LoggedInOk"].ToString();

//bool
Session["LoggedInOk"] = true;
bool value = Session["LoggedInOk"] as bool;

//class
Book book = new Book();
Session["LoggedInOk"] = book;
Book value = Session["LoggedInOk"] as Book;

//datatable
DataTable table = new DataTable();
Session["LoggedInOk"] = table;
DataTable value = Session["LoggedInOk"] as DataTable;

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

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

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

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

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

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

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

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

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

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

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

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

使用会话进行授权或身份验证检查并不是
会话
的设计目的,将被视为不安全的做法,更不用说不安全了。使用现有的身份验证/授权框架,如ASP.NET Identity或内置的成员资格提供程序(后者在很大程度上已被前者取代)。它们具有内置的检查和自动重定向未授权请求的机制,以及您可以调用以检查授权或角色检查的方法

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


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

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


使用会话进行授权或身份验证不是会话的设计目的,被视为不好的做法。使用现有的身份验证/授权框架,如ASP.NET Identity或内置的成员资格提供程序(后者在很大程度上已被前者取代)。这些都内置了自动重定向未授权请求的检查和机制,以及可以调用以检查授权或角色检查的方法。我在许多实例中看到会话用于查看用户是否登录,或者在用户未登录时重定向。这被认为不合适了吗?真的不合适。您应该使用现有解决方案检查用户尝试导航到的站点部分的授权。这比使用会话检查用户是否经过身份验证要安全得多。可以使用web.config配置MembershipProvider(例如),并在用户未经过身份验证时自动重定向用户。执行此操作所需的配置最少,并且不需要自定义代码(用于该操作)。这一切都可以在web.config中完成。也许这只是为了做家庭作业。但在实际应用程序中,在数据库中存储密码从来都不是一个好主意。密码应该是单向散列的。基本上,检索纯文本版本应该非常困难。相反,当用户尝试登录时,您应该对其密码进行散列,并查看散列是否与您为其密码存储的内容相匹配。使用会话进行授权或身份验证不是会话的设计目的,将被视为不好的做法。使用现有的身份验证/授权框架,如ASP.NET Identity或内置的成员资格提供程序(后者在很大程度上已被前者取代)。这些都内置了自动重定向未授权请求的检查和机制,以及可以调用以检查授权或角色检查的方法。我在许多实例中看到会话用于查看用户是否登录,或者在用户未登录时重定向。这被认为不合适了吗?真的不合适。您应该使用现有解决方案检查用户尝试导航到的站点部分的授权。这比使用会话检查用户是否经过身份验证要安全得多。可以使用web.config配置MembershipProvider(例如),并在用户未经过身份验证时自动重定向用户。有最小的配置需要t