gpt4 book ai didi

asp.net - 如何在 Asp.Net Membership Provider 中处理 "Remember me"

转载 作者:行者123 更新时间:2023-12-05 00:06:36 27 4
gpt4 key购买 nike

我为我的 ASP.Net 网站编写了一个自定义成员资格提供程序。

我使用默认的 Forms.Authentication 重定向,您只需将 true 传递给方法,告诉它为当前用户“记住我”。

我认为这个函数只是将一个 cookie 写入本地机器,其中包含用户的一些登录凭据。

ASP.Net 在这个 cookie 中放了什么?如果我的用户名格式已知(例如顺序编号),是否有可能有人可以轻松复制此 cookie 并将其放在自己的机器上,从而能够以其他用户的身份访问该站点?

此外,我需要能够拦截拥有 cookie 的用户的身份验证。由于他们上次登录帐户的时间可能已被取消,他们可能需要更改密码等,因此我需要拦截身份验证的选项,如果一切正常,则允许他们继续或将他们重定向到正确的登录页面.

我会很高兴就这两点提供指导。我收集了第二个我可能会在 global.asax 中放一些东西来拦截身份验证?

提前致谢。

最佳答案

对我来说,解决方案是区分 浏览器 session auth cookie(不要与 asp.net session cookie 混淆)和 执着 一 - 设置低过期时间将创建一个持久性 cookie,这意味着它会在浏览器关闭并在过期时间内重新打开时被记住。以下对我有用:

public void SetAuthenticationCookie(LoginView loginModel)
{
if (!loginModel.RememberMe)
{
FormsAuthentication.SetAuthCookie(loginModel.Email, false);
return;
}
const int timeout = 2880; // Timeout is in minutes, 525600 = 365 days; 1 day = 1440.
var ticket = new FormsAuthenticationTicket(loginModel.Email, loginModel.RememberMe, timeout);
//ticket.
string encrypted = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted)
{
Expires = System.DateTime.Now.AddMinutes(timeout),
HttpOnly = true
};
HttpContext.Current.Response.Cookies.Add(cookie);
}

关于asp.net - 如何在 Asp.Net Membership Provider 中处理 "Remember me",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3118717/

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