9

我意识到这个问题之前可能已经被问过,但我找不到任何与我的情况完全匹配的东西。

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

我尝试了多种解决方案,其中许多都发布在 Stack Overflow 上,但似乎没有任何效果。

4

2 回答 2

14

编辑 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>

或者

如果配置失败,请尝试这篇文章:链接

您需要清除任何现有的身份验证票并创建您的自定义票。如果用户选择了该选项,则归结为您需要执行的这段代码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);
    }
于 2013-08-06T14:39:38.973 回答
1

您可以手动创建一个包含映射到您的用户的 GUID 的 cookie(永不过期)。当用户对您的用户登录页面进行 GET 操作时,您可以读取该 cookie 并检查 guid 并对用户进行身份验证。检查链接

http://msdn.microsoft.com/en-us/library/ms178194(v=vs.100).aspx

http://msdn.microsoft.com/en-us/library/78c837bd(v=vs.100).aspx

http://www.codeproject.com/Articles/31914/Beginner-s-Guide-To-ASP-NET-Cookies

于 2013-08-07T08:28:37.267 回答