gpt4 book ai didi

c# - "Remember Me"与 asp.net 网页

转载 作者:太空狗 更新时间:2023-10-29 18:18:29 25 4
gpt4 key购买 nike

我意识到以前可能有人问过这个问题,但我找不到完全符合我的情况的内容。

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

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

最佳答案

编辑 2

Forms Authentication 使用的 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# - "Remember Me"与 asp.net 网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18082710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com