我知道两种身份验证方式:首先:使用FormsAuthentication
:
FormsAuthentication.SetAuthCookie(login.UserName, login.RememberMe);
另一种方式:使用FormsAuthenticationTicket
var ticket = new FormsAuthenticationTicket(1, user.Email.ToString(), DateTime.Now, DateTime.Now.AddSeconds(300000), login.RememberMe, "a");
var ticketEncrypted = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie("eshop", ticketEncrypted);
if (login.RememberMe)
{
cookie.Expires = DateTime.Now.AddMinutes(100);
}
HttpContext.Response.Cookies.Add(cookie);
我想知道哪一个更好?什么时候我应该使用第一个,什么时候应该使用另一个?
第一种方法也使用FormsAuthenticationTicket
- 按照源代码FormsAuthentication.GetAuthCookie
,你可以看到
FormsAuthenticationTicket ticket = FormsAuthenticationTicket.FromUtc(2, userName, utcNow, expirationUtc, createPersistentCookie, string.Empty, strCookiePath);
string str = FormsAuthentication.Encrypt(ticket, hexEncodedTicket);
即开始看起来与您的第二个代码示例相似
除非您使用无 cookie 身份验证,否则两者都在做同样的事情,即在浏览器中设置 cookie
如果您想更好地控制 cookie 具有的属性,则可以使用后者。