加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

为什么我的ASP.NET MVC持久性的auth cookie不起作用?

发布时间:2020-12-15 22:41:45 所属栏目:asp.Net 来源:网络整理
导读:我使用ASP.NET MVC 3,使用表单身份验证(基于您使用file-新建的修改后的香草帐号). 当您登录时,我正在设置一个验证cookie FormsAuthentication.SetAuthCookie(userName,true); 所以这应该设置一个持久的cookie.但是如果我关闭浏览器并重新打开,当我浏览网站时
我使用ASP.NET MVC 3,使用表单身份验证(基于您使用file->新建的修改后的香草帐号).

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

FormsAuthentication.SetAuthCookie(userName,true);

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

我的web.config:

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

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

解决方法

我最好使用身份验证券创建一个cookie.
SetAuthCookie在引擎盖下创建一张验证机票.你是否尝试过自己的auth机票?它将让您存储额外的数据.

以下是一个例子:

// 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);

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读