Form认证timeout无效问题
来源:互联网 发布:找回淘宝账号密码 编辑:程序博客网 时间:2024/06/05 19:11
web.config有如下设置:
<authentication mode="Forms"> <forms name=".GZFBCWeb" loginUrl="~/Admin/Auth/Login" timeout="1" defaultUrl="~/" cookieless="UseCookies" slidingExpiration="true" enableCrossAppRedirects="true" path="/"/> </authentication>
其中
timeout的单位是分钟,意即认证多少分钟后过期;
slidingExpiration=”true”,如果用户保持活跃,则重置timeout计时器,理论上,只要你永远活跃,则认证永不过期。
问题是,我登录之后,就此不动,过了1分钟后再去访问,仍旧没有退出,认证依然有效。
用浏览器调试,发觉cookie=.GZFBCWeb的过期时间为“Session”,意思是,这是一个会话cookie,只有浏览器关闭才失效。
为啥呢,timeout不起作用?
后来翻看代码,才知道是我代码的原因。登录成功后,没有采用默认的处理方式,而是自己生成了一个cookie,由于没有指定cookie的过期属性,造成该COOKIE是默认的会话生命周期。我原先代码是这样写的:
void Signin(LoginInfo sUT){//此函数在登录成功后调用 System.Web.Security.FormsAuthenticationTicket tk = new FormsAuthenticationTicket(1, sUT.LoginName, DateTime.Now, DateTime.Now.AddMonths(1), true, "", FormsAuthentication.FormsCookiePath ); string key = FormsAuthentication.Encrypt(tk); //得到加密后的身份验证票字串 HttpCookie ck = new HttpCookie(FormsAuthentication.FormsCookieName, key); Response.Cookies.Add(ck);}
又是票据又是加密,不明觉厉。
重点是最后两句,自己输出了一个cookie,使得web.config的设置完全失去效用。
后来改为:
void Signin(LoginInfo sUT){ //注意最后一个参数一定要设置为true FormsAuthentication.SetAuthCookie(sUT.LoginName, true);}
问题解决。简简单单,何必另起炉灶,故弄玄虚。
==============================
由上面的设置,我这个FORM认证依赖于COOKIE“.GZFBCWeb”,只要将该COOKIE删除,系统立马就退出了。
阅读全文
0 0
- Form认证timeout无效问题
- form reset无效问题
- form认证问题
- Form认证的一点问题
- form认证和windows认证间切换的问题
- Form认证导致登陆页面的样式无效和图片不能显示的原因
- C#Form的TopMost属性无效的问题
- Ext.form.FileUploadField第二次选择同一附件无效的问题
- Ext.form.TextArea中width,height无效问题
- HttpWebRequest提交Form和上传文件的认证问题
- Form认证的数据库表移植带来的问题
- Jdeveloper 基于form认证中错误页重定向问题
- SVN认证配置无效
- 关于Form认证
- Form 表单认证
- Moss配制Form认证
- Form表单认证
- sharepoint-form认证
- 常用JS正则表达式
- 为什么HashMap是线程不安全的
- 浅谈读入优化姿势
- 深入学习js之浅谈作用域之(eval()和with)
- Unity中查找脚本被哪些Prefab或场景引用
- Form认证timeout无效问题
- Linux下用sheel脚本完整实现tree功能
- webservice简介
- B
- Pyinstaller打包
- 前端PM必须知道的用户心理那些事儿
- HDU
- Treats for the Cows---区间dp--逆序推
- js特效之下星星