你们是怎么解决session过期的?

2013-09-26 13:40:45 +08:00
 firhome
用户长期不操作,如果session过期,刷页面的时候跳转到登陆页面..但是如果点击ajax请求数据..就不行了.

1种是ajax的时候做判断,难道要在全局的ajax函数都加上判断?

2是前端页面定时器..

不知道你们怎么做的?
9468 次点击
所在节点    程序员
16 条回复
bosiam
2013-09-26 14:02:03 +08:00
当然是请求的地址会自动做判断,是否有权限、是否登录
CoX
2013-09-26 14:05:49 +08:00
接收ajax请求的页面做判断,给相应的返回状态
tabris17
2013-09-26 14:09:28 +08:00
不理解你到底在纠结哪个,究竟是要防止session过期,还是ajax中如何处理非法请求

前者,最简单的方法,页面内嵌iframe,定时刷新。
后者,ajax请求返回错误状态,前端根据不同错误状态做出响应
msg7086
2013-09-26 14:10:12 +08:00
为什么不延长session过期时间?
cxe2v
2013-09-26 14:21:13 +08:00
@msg7086 延长个啥?人家用ajax刷新多久你能预估到?
Mutoo
2013-09-26 14:24:49 +08:00
为啥要内嵌iframe,ajax做一个心跳同步,就可以一直保持session了
ejin
2013-09-26 14:27:28 +08:00
以前专门看过大网站怎么做的,一般是定时发送个请求以保证只要页面没关掉就不会失效,当然ajax部分还是要判断下的。

二者缺一不可

这是以前的解决方案,现在嘛,没太注意了,不过要兼容以前浏览器的话还是这个方案比较好
YuHong
2013-09-26 14:31:23 +08:00
后端 statusCode 返回 401
前端针对 xhr 做个全局的request control
例如jQuery $(document).ajaxError(req, xhr) { if(xhr.status === 401) // do something}
bombless
2013-09-27 10:01:47 +08:00
不知道楼主的意思是保证ajax让前端正确的跳到失效的界面,还是说在ajax时保持一个登陆状态。
失效的话就让ajax返回401,前端收到之后就知道过期了。保持登陆状态的话真没什么好谈的,感觉不是一个问题。
horsley
2013-09-27 10:07:19 +08:00
cookie 回填session
zebinary
2013-09-28 08:11:55 +08:00
lz的意思应该是ajax请求发现过期,需要js控制来进行跳转,这个代码如何统一吧。这个封装一个统一的ajax函数就好了。
msg7086
2013-09-28 09:07:52 +08:00
@cxe2v session又不是一定要过期。
如果你需要让session不过期,那直接把session过期时间改为无限长不就得了。
这和ajax有什么关系?

扯到ajax的我只能想到的是用户在另一个页面手动登出以后再回来执行ajax的情况。
这种时候可以根据ajax请求的header标示直接返回一个特定的错误码json让前台处理就行了。
cxe2v
2013-09-28 10:43:55 +08:00
@msg7086 哈哈,你不过期是打算一直耗着服务器资源吗?当然你做小站的可以一直不过期,不过对于需要性能的网站来说,不过期还真不行
msg7086
2013-09-28 14:13:08 +08:00
@cxe2v 如果从需求上就要求session不过期的话,我觉得应该是要花精力去解决session耗资源的问题……
liunkor
2013-09-28 15:59:21 +08:00
可以设置时间啊
avatasia
2013-09-29 10:26:22 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/83751

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX