FormsAuthentication.SetAuthCookie(“UserName",false)能保存多长时间?

bdbox@qq.com 2006-12-01 05:43:31
FormsAuthentication.SetAuthCookie(”UserName",false)能保存多长时间?
相关代码如下:
登陆时:
int userId = security.Login(txtUserName.Text,Security.Encrypt( txtPassword.Text.Trim()));

if ( userId != -1 )
{
// Use security system to set the UserID within a client-side Cookie
FormsAuthentication.SetAuthCookie( txtUserName.Text,(lstSavePassword.SelectedIndex == 0 ? false:true));
....

在Global文件中:
if (Request.IsAuthenticated == true)
{
...

cookie.Expires = DateTime.Now.AddMinutes(saveDate);

ticket = new FormsAuthenticationTicket(
1, // version
Context.User.Identity.Name, // user name
DateTime.Now, // issue time
DateTime.Now.AddMinutes( saveDate ), // expires every hour
false, // don't persist cookie
roleStr // roles
);
}


String cookieStr = FormsAuthentication.Encrypt(ticket);

cookie.Values.Add("ticket",cookieStr);
...
Response.Cookies.Add(cookie);
}

web.config中有如下设置:
...
<authentication mode="Forms">
<forms name=".DIGITALKM" protection="All" timeout="60" />
</authentication>
...

每次登陆完不保存密码,过一会再登陆,显示已没有登陆,可是明明authentication 中设置为60分钟啊!经查cookies中仍有内容。

当FormsAuthentication.SetAuthCookie(”UserName",false)时不是读取config中的timeout吗?这个问题弄得我要死了!求救啊!!
...全文
2069 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyongjie2008 2010-06-10
  • 打赏
  • 举报
回复
明白了,学习!
sujo 2006-12-16
  • 打赏
  • 举报
回复
关闭浏览器就没有了
HJS1820 2006-12-04
  • 打赏
  • 举报
回复
幫頂
bdbox@qq.com 2006-12-04
  • 打赏
  • 举报
回复
不知以上这位要说的是什么意思?
scow 2006-12-04
  • 打赏
  • 举报
回复
FormsAuthentication.SetAuthCookie(”UserName",false)已经创建了身份验证票和cookie, 并完成了将身份验证票保存到cookie中, 该cookie是非持久的, 与浏览器相关, 关闭浏览器就失效, web.config中设置的timeout无效. 已经验证客户端身份后,在Global中再创建身份验证票是多余的.
bdbox@qq.com 2006-12-04
  • 打赏
  • 举报
回复
有谁说说FormsAuthentication.SetAuthCookie 的机制是怎么样的?可不可以这样理解:
虽然在web.config中设置了时间,但这个时间是用户在线的时间,一当用户关闭刘览器,用户不在线了,那个这样时间也就无效了。用户再次登陆时,这个时间也就无效了,需要重新登陆。但是,当用户在线的时间超过了web.config中的时间时,自动要求用户重新登陆。
不知我理解的对不对?

有这样的理解才能与cookie同步啊!
scow 2006-12-01
  • 打赏
  • 举报
回复
FormsAuthentication.SetAuthCookie == {cookie.Expires = DateTime.Now.AddMinutes(saveDate);

ticket = new FormsAuthenticationTicket(
1, // version
Context.User.Identity.Name, // user name
DateTime.Now, // issue time
DateTime.Now.AddMinutes( saveDate ), // expires every hour
false, // don't persist cookie
roleStr // roles
);
}


String cookieStr = FormsAuthentication.Encrypt(ticket);

cookie.Values.Add("ticket",cookieStr);}
bdbox@qq.com 2006-12-01
  • 打赏
  • 举报
回复
Global中创建的只是用来保存ticket而以啊~。这里我的代码想说明的也是这个意思!
scow 2006-12-01
  • 打赏
  • 举报
回复
FormsAuthentication.SetAuthCookie己经创建了身份验证票, 和你在Global中创建的不是一个.
sunjay117 2006-12-01
  • 打赏
  • 举报
回复
from验证就这样子把
bdbox@qq.com 2006-12-01
  • 打赏
  • 举报
回复
不好意思,没有说清楚:
1。关闭页面而不是退出页面,关闭进入原页面,却发现已不属于登陆的人员了。但检查cookies有内容。!

62,054

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧