繁体   English   中英

设置通过表单身份验证记住用户的时间

[英]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分钟

已更新评论(9/12/2014)

因此,如果我将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM