[英]Set how long a user is remembered with forms authentication
在我的asp.net Web表单应用程序中,我正在使用表单身份验证。 我对这件事感到困惑:
我的web.config具有:
<authentication mode="Forms">
<forms loginUrl="Login.aspx" defaultUrl="Welcome.aspx">
</forms>
</authentication>
我的登录按钮如下所示:
protected void Login_Click(object sender, EventArgs e)
{
if (AuthenticateUser(UserNametxt.Text, Passwordtxt.Text))
{
FormsAuthentication.RedirectFromLoginPage(UserNameTextBox.Text, RememberMeCheckBox.Checked);
}
else
{
MessageLbl.Text = "Wrong UserName and/or Password.";
}
}
<forms
>具有可以设置的属性timeout=""
。 我了解默认情况下该属性为30
或30分钟。 我认为该timeout属性用于设置使用FormsAuthentication.RedirectFromLoginPage(UserNameTextBox.Text, RememberMeCheckBox.Checked)
来记住选中我的复选框的用户被记住的时间,但是从我在线阅读的内容来看,timeout属性是登出前您可以在网页上闲置多长时间。
如果是这样,如何通过使用表单身份验证检查RememberMeCheckBox
用户的时间?
我了解默认情况下该属性为30或30分钟。 我认为此超时属性用于设置使用FormsAuthentication.RedirectFromLoginPage(UserNameTextBox.Text,RememberMeCheckBox.Checked)来记住选中我的复选框的用户要记住多长时间。
是的,你是对的。 FormsAuthentication超时默认值为30分钟 。
我在网上阅读的内容看起来像是timeout属性,即您可以在退出之前闲置多长时间。
这称为SessionState超时。 SessionState超时默认值为20分钟 。
因此,如果我将SessionState超时设置为48小时,这是否意味着单击“记住我”复选框的用户将被记住并在48小时内通过该网站上的表单身份验证自动进行身份验证? (鉴于我上面的代码)
如果将SessionState超时设置为48小时,则在用户登录后,该用户可以使浏览器空闲48小时,而无需注销。
因此,您的问题的答案为否。
在您的问题中,您只希望用户在48小时内无需登录。 如果是这样,则需要将FormAuthentication超时设置为48小时。
以下设置将永久性Cookie设置为在48小时后过期。
<authentication mode="Forms">
<forms ... timeout="2880">
</forms>
</authentication>
您需要通过使用Cookies并设置其到期日期时间来做到这一点。 如果存在Cookie,请将其删除。 设置一个具有您首选的到期日期时间的新cookie。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.