2009-09-29 65 views

回答

3

您使用的是由ASP.NET提供的Authenication服务吗?如果是这样,它很容易。

+0

我在之前的项目上使用了FormsAuthentication方法,但想知道是否有其他方法来实现它。 – lnetanel

+0

当然有,通过手动分配一个cookie。 –

0

对我来说,解决方案是区分浏览器会话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); 
    }