首页 新闻 会员 周边 捐助

FormsAuthenticationTicket 持久参数设定为true但是并没有持久,回话结束就没有了。

0
悬赏园豆:10 [已解决问题] 解决于 2013-08-20 22:16
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(timeout), isPersist, userData);

 

isPersist的确看到是true

1 string authcookie = FormsAuthentication.Encrypt(ticket);
2 
3 HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, authcookie);
4 
5 context.Response.Cookies.Add(cookie);

但是如下图Expires确是session

不要理我的主页 不要理我 | 初学一级 | 园豆:180
提问于:2013-08-20 21:05
< >
分享
最佳答案
0

给cookie加上域名试试

收获园豆:10
dudu | 高人七级 |园豆:29570 | 2013-08-20 21:17

没用,localhost不就是吗?上面图上有。

不要理我 | 园豆:180 (初学一级) | 2013-08-20 21:37

@不要理我: 

添加如下的代码:

cookie..Expires = ticket.Expiration;
dudu | 园豆:29570 (高人七级) | 2013-08-20 21:46

@dudu: 得这么写

if (ticket.IsPersistent)
 {
                cookie.Expires = ticket.Expiration;
}

这么写,好鸡肋啊,不会这样子吧。

不要理我 | 园豆:180 (初学一级) | 2013-08-20 21:51

@不要理我: 还不如我之前写的呢,就是看这个有加密在里面才偷懒用用看。

不要理我 | 园豆:180 (初学一级) | 2013-08-20 21:53

@不要理我: 微软也是这么写的,你可以用ILSpy看一下System.Web.Security.FormsAuthentication的实现代码。

dudu | 园豆:29570 (高人七级) | 2013-08-20 21:53

@dudu: 那他传一个持久化的值干嘛使啊,还得自己做判断。

不要理我 | 园豆:180 (初学一级) | 2013-08-20 21:56

@不要理我: 这个值作为加密字符串的一部分传给客户端,解密后需要根据这个值进行判断

dudu | 园豆:29570 (高人七级) | 2013-08-20 21:59

@dudu:要是上面那段代码集成在FormsAuthentication.Encrypt(ticket);就好了。学到老活到老,谢谢dudu

不要理我 | 园豆:180 (初学一级) | 2013-08-20 22:07
其他回答(1)
0

mark

vj79 | 园豆:202 (菜鸟二级) | 2014-06-14 15:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册