我的程序里一直要有个用户信息,所以在登陆页面转到主页面时,加了session["userid"]信息。同时为防止用户跳过登陆,在主页面的page_load函数里加了session["userid"]的判断,如果session["userid"]为空,则退到登陆界面。因为session["userid"]有生命周期,有时我关了浏览器,然后再打开,还是会跳过登陆界面进入主页,所以我在page_load函数里把session["userid"]赋给另一个session["userid_2"],然后登陆完后直接删掉session["userid"]。
问题来了,如果刷新的时候,也是会跳到登陆界面。这该如何是好?
网上的js判断是刷新还是关闭的程序也没用,百撕不得骑姐。
沙发10分。
刷新
不退出登陆
session
界面
浏览器
------解决方案--------------------
“有时我关了浏览器,然后再打开,还是会跳过登陆界面进入主页”
如果是多标签页浏览器,要关掉整个浏览器进程session才会失效(cookie中的sessionID的有效期是“会话”)
首先这一点就是不科学的
其次你弄一个userid_2是想干啥。。既然都在session里面,session失效的时候俩都不在了
其实你完全没有必须搞这么复杂,直接说想要的需求吧。
如果不做任何处理,登录后不关闭浏览器重新打开,点刷新是不会要求重新登录的(session没有失效)
------解决方案--------------------
刷新与关闭本就不好判断
你完全多此一举,就原来的方式就行了,关闭浏览器后session会立即失效的,除非还有其他窗口没关;如果没过期,就不用登陆没什么不合理的;一般来说,提供一个手动退出的按钮就行了,用户安全意识强要求高的话可以退出后再关闭浏览器
------解决方案--------------------
A:登陆页面
B:主页
业务逻辑
A登陆成功 则可以访问B
A:访问 如果有登陆信息则进入B
B:访问 如果没有登陆信息进入A
------解决方案--------------------
这么说吧,普通网站的登录一般是这样:登录后存入session,关闭浏览器或者默认时间内无操作(没有发向服务器端的请求)则需要重新登录,如果要做“记住我”或者“两周内免登陆”的功能,就要存登录信息(最好加密一下)到cookie里面,session失效时判断cookie中是否有信息。
如果想做到开着网页刷新的时候永远不到重登陆,你可以在每个页面都搞个轮询的AJAX请求公共JS,可以什么都不干,只是向服务器端发个请求,间隔时间比session失效的时间短就行了,以这样手动的方式让session的有效时间滑动加长。