繁体   English   中英

为什么我的ASP.NET MVC持久身份验证cookie不起作用?

[英]Why is my ASP.NET MVC persistent auth cookie not working?

我正在使用ASP.NET MVC 3,使用表单身份验证(基于使用file-> new获得的修改后的vanilla帐户代码)。

当您登录时,我正在设置一个身份验证cookie

FormsAuthentication.SetAuthCookie(userName, true);

所以这应该设置一个持久的cookie。 但是,如果我关闭浏览器并重新打开,当我浏览到该网站时,我被迫再次登录! 我可以看到使用chrome dev工具创建cookie(.ASPXAUTH)并在关闭浏览器时不被删除,那么发生了什么?

我的web.config:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogIn" timeout="10000"/>
</authentication>

我在本地测试,如果这有任何区别,在IIS下。

我最好用身份验证票创建一个cookie。 SetAuthCookie在引擎盖下创建一个身份验证票。 你有没有尝试制作自己的身份证? 可以让你存储额外的数据

这是一个例子:

// create encryption cookie         
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, 
        userName, 
        DateTime.Now,
        DateTime.Now.AddDays(90),
        createPersistentCookie, 
        string.Empty);

// add cookie to response stream         
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);    
System.Web.HttpCookie authCookie = new System.Web.HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
if (authTicket.IsPersistent) 
{     
      authCookie.Expires = authTicket.Expiration; 
}
System.Web.HttpContext.Current.Response.Cookies.Add(authCookie);  

希望这可以帮助。

解决了来自@alexl的评论:

您可以查看以下答案: 使用ASP .Net Membership保持用户登录持久性

好吧,这个链接好像是为我排序 - 坚持使用SetAuthCookie并调整我的配置以显式设置cookie名称(在web.confg中),现在一切正常。 奇怪的! -

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM