我意识到可能曾经有人问过这个问题,但是我找不到与我的情况完全相符的东西。

我在ASP.Net网页(不是Web表单)和WebMatrix中使用WebMail帮助器创建了一个网站。要求用户登录该网站,并且有一个“记住我”框(理论上)将使用户保持登录状态,直到他/她选择注销为止。如果用户关闭浏览器并在20-30分钟内重新打开浏览器,则该网站确实使用户保持登录状态。但是,在20-30分钟不访问该网站后,该用户将注销。 (顺便说一句,即使使用WebMatrix模板“Starter Site”,该问题似乎也存在。)

我尝试了多种解决方案,其中许多发布在Stack Overflow上,但似乎无济于事。

最佳答案

编辑2

表单例份验证使用的cookie称为“.ASPXAUTH”,默认情况下设置为30分钟后过期。

转到您的web.config并找到authentication元素。您可以在此处设置Cookie的过期时间(以分钟为单位),如下所示:

<system.web>
    <authentication mode="Forms">
        <forms loginUrl="~/Account/Login"
               name="myCookie"                  <!-- optional, if you want to rename it -->
               timeout="2880" />                <!-- expires in 48 hours -->
    </authentication>
</system.web>



如果配置使您失败,请尝试以下文章:Link

您需要清除所有现有的身份验证票证并创建自定义票证。如果用户选择了remember me选项,则将其归结为您需要执行的这段代码:
    if (rememberMe)
    {
        // Clear any other tickets that are already in the response
        Response.Cookies.Clear();

        // Set the new expiry date - to thirty days from now
        DateTime expiryDate = DateTime.Now.AddDays(30);

        // Create a new forms auth ticket
        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2, loginModel.UserName,  DateTime.Now, expiryDate, true, String.Empty);

        // Encrypt the ticket
        string encryptedTicket = FormsAuthentication.Encrypt(ticket);

        // Create a new authentication cookie - and set its expiration date
        HttpCookie authenticationCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
        authenticationCookie.Expires = ticket.Expiration;

        // Add the cookie to the response.
        Response.Cookies.Add(authenticationCookie);
    }

关于c# - asp.net网页的"Remember Me",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18082710/

10-15 03:01