在ASP.NET中实现“记住我”功能
答
您使用的是由ASP.NET提供的Authenication
服务吗?如果是这样,它很容易。
答
对我来说,解决方案是区分浏览器会话cookie(不要与asp.net会话cookie混淆)和持久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);
}
我在之前的项目上使用了FormsAuthentication方法,但想知道是否有其他方法来实现它。 – lnetanel
当然有,通过手动分配一个cookie。 –