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

本文关键字:用户 时间 身份验证 表单 设置 | 更新日期: 2023-09-27 18:21:31

在我的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分钟。我认为这个timeout属性是为了设置用户选中我的复选框将被记住FormsAuthentication.RRedirectFromLoginPage(用户名文本框.Text,RememberMeCheckBox.Checked)

是的,你是对的表单身份验证超时默认值为30分钟


我在网上看到的超时属性是你在注销之前可以在网页上处于空闲状态。

它被称为SessionState超时SessionState超时默认值为20分钟

更新征求意见(2014年9月12日)

因此,如果我将SessionState超时设置为48小时,这是否意味着单击我的"记住我"复选框的用户将被记住,并且通过该网站上的表单身份验证自动进行身份验证持续48小时?(根据我的上述代码)

如果将SessionState超时设置为48小时,则在用户登录后,用户可以在不注销的情况下使浏览器空闲长达48小时。

所以你的问题的答案是否定的。

在您的问题中,您只是希望用户在48小时内不需要登录。如果是,则需要将FormAuthentication超时设置为48小时。

以下设置设置持久cookie在48小时后过期。

<authentication mode="Forms">
   <forms ... timeout="2880">
   </forms>
</authentication>

您需要使用Cookie并设置其到期日期时间来完成此操作。如果存在Cookie,请将其删除。设置一个新的Cookie,其中包含您喜欢的过期日期时间。