如何设置cookies随浏览器关闭而失效

网字 2018-05-13 04:45:09
写了个登陆程序,web.config配置如下(经测试,forms节点不添加timeout字段时,默认为30min):

<authentication mode="Forms">
<forms name="txqLogin" protection="All">

服务端登陆代码也很简单。

protected void btnSubmit_Click(object sender, EventArgs e) {
if (!Page.IsValid) return;
if (FormsAuthentication.Authenticate(txtUserName.Text.Trim(), txtPassWord.Text.Trim())) {
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text.Trim(), true);
Response.Redirect(FormsAuthentication.DefaultUrl);
}
else {
labMsg.Text = "用户名或密码错误";
}
}

现在的情况是,登陆成功后,关闭浏览器(在不手动注销的前提下),再次打开浏览器,输入受限页面(需要登陆才能查看的页面),居然可以直接访问。
...全文
2316 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
insus 2018-07-03
  • 打赏
  • 举报
回复
不要对Cookie设置任何正,负或0时间即可。
二月十六 2018-07-02
  • 打赏
  • 举报
回复
捕捉关闭方法而设置失效的方式不太可取,可能有关浏览器、断电等情况
wylwyl1108 2018-07-02
  • 打赏
  • 举报
回复
不设置Cookie的Expire就好了
默认就是cookie随着浏览器关闭而关闭
simaqingtian 2018-05-29
  • 打赏
  • 举报
回复
以前账户信息也是存cookie,偶尔有串号问题一直解决不了,最后改用session了
卡卡 undefined 2018-05-23
  • 打赏
  • 举报
回复
设置session吧。会话是关闭窗口即失效的。
编程有钱人了 2018-05-22
  • 打赏
  • 举报
回复
ticket = new FormsAuthenticationTicket( 1, us.RealName, DateTime.Now, DateTime.Now.AddMinutes(1), true, //票据是否持久性,若为false,设定时间到后票据过期,若为true,票据持久有效,设定时间无效。当设定为true时只是票据持久,但cookie并不是持久,还有根据需要设定cookie的Expires us.Roles, "/" );
编程有钱人了 2018-05-22
  • 打赏
  • 举报
回复
引用 7 楼 wangxiaoyu_net 的回复:
[quote=引用 4 楼 wangjun8868 的回复:] 登录的时候给cookie的时间不设置就可以了
如我服务端登陆代码所示,我未做任何操作cookie的代码,直接用FormsAuthentication.Authenticate()就完成了验证。而在web.config中,又不允许将timeout设置为0。我看到有些示例登陆代码还会用FormsAuthenticationTicket来生成票据,那里面就有设置cookie的时间。[/quote] //创建票证 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, username, DateTime.Now, DateTime.Now.AddMinutes(720), isPersistent, userData, FormsAuthentication.FormsCookiePath); // 加密票证 string encTicket = FormsAuthentication.Encrypt(ticket); // 创建cookie HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket) { HttpOnly = true, Path = FormsAuthentication.FormsCookiePath, Secure = false }; cookie.Expires = ticket.Expiration;//可以不设置Expires属性
guanyelong 2018-05-15
  • 打赏
  • 举报
回复
你用jquery.cookie.js 分分钟解决你的问题
sdfgrtyu 2018-05-14
  • 打赏
  • 举报
回复
$(window).unload(function(){ //响应事件 alert("获取到了页面要关闭的事件了!"); });
网字 2018-05-14
  • 打赏
  • 举报
回复
引用 2 楼 jjkk168 的回复:
<authentication mode="Forms"> <forms loginUrl="Login.aspx" name=".ASPXAUTH" timeout="1440"/> </authentication> <authorization> <deny users="?"/> </authorization> 有没有后面这个authorization?
有的,我贴子上只截取了部分用以说明问题。
网字 2018-05-14
  • 打赏
  • 举报
回复
引用 1 楼 aspvfp 的回复:
设置 cookie过期时间为0啊
在哪里设置?web.config中好像不允许将timeout设置为零。
网字 2018-05-14
  • 打赏
  • 举报
回复
引用 4 楼 wangjun8868 的回复:
登录的时候给cookie的时间不设置就可以了
如我服务端登陆代码所示,我未做任何操作cookie的代码,直接用FormsAuthentication.Authenticate()就完成了验证。而在web.config中,又不允许将timeout设置为0。我看到有些示例登陆代码还会用FormsAuthenticationTicket来生成票据,那里面就有设置cookie的时间。
还想懒够 2018-05-14
  • 打赏
  • 举报
回复
<authentication mode="Forms"> <forms loginUrl="Login.aspx" name=".ASPXAUTH" timeout="1440"/> </authentication> <authorization> <deny users="?"/> </authorization> 有没有后面这个authorization?
aspvfp 2018-05-14
  • 打赏
  • 举报
回复
设置 cookie过期时间为0啊
little_蔷薇 2018-05-14
  • 打赏
  • 举报
回复
setcookie('变量名','',time()-1);就和2楼说的那样,删除cookie即可。
编程有钱人了 2018-05-14
  • 打赏
  • 举报
回复
登录的时候给cookie的时间不设置就可以了

62,046

社区成员

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

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

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

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