在 asp.net MVC 中进行身份验证的更好方法



我知道两种身份验证方式:首先:使用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 具有的属性,则可以使用后者。

最新更新