实现 remember me 功能的 token 过期时间一般设置多久为好

2018-05-21 10:28:11 +08:00
 mzmxcvbn

当前用的 flask,flask-login,flask-session

1,flask-login 为实现 remember me 功能,登录时给一个 token 存在 cookie 里,设置一个 cookie 过期时间。
2,服务端使用 redis 存 session,也有设置一个过期时间

有一个问题就是如果 remember me 的过期时间比 session 久的话,session 的过期时间就没有效果了 比如把 remember me 设置一天, 服务器 session 过期时间设置 2 小时( 2 小时没有请求,就强制登出),但不操作 2 小时以后再请求,服务器 flask-login 直接就用 remember me 的 token 登录了,相当于 session 的过期时间就失效了。

所以我想问,这两个过期时间分别设置多久比较好?当前只能设置成两个过期时间一样,来达到需求,还是说一般这种都是设置成一样的?

4326 次点击
所在节点    Python
8 条回复
fcten
2018-05-21 10:37:15 +08:00
如果只使用 cookie 就可以完成登录,session 就没有作用
如果想要使用 session 控制登录状态,在使用 cookie 登录的过程中就必须校验 session
mzmxcvbn
2018-05-21 10:55:30 +08:00
@fcten 仔细想想好像是这么回事,用 cookie 登录时验证 session 的话,cookie 过期时间就没有效果了,看来要么就把 remember me token 的过期时间设置的比 session 过期时间短,要么就设置成一样的,才能实现两个需求
lfzyx
2018-05-21 11:05:41 +08:00
为什么要同时用 cookie 和 session ?
woostundy
2018-05-21 11:21:08 +08:00
@lfzyx #3 cookie 记录 session 的 key
mzmxcvbn
2018-05-21 11:23:29 +08:00
@lfzyx 因为想要实现登录界面的 remember me 按钮的选项,还有什么更好的方法吗
zjengjie
2018-05-21 13:03:02 +08:00
如果发现 token 没有过期,就自动创建一个新 session 不就可以了?
mzmxcvbn
2018-05-21 13:07:19 +08:00
@zjengjie 对呀,现在就是这样,所以 sission 的过期时间就相当于无效了
zjengjie
2018-05-22 09:26:37 +08:00
@mzmxcvbn 不知道你的 token 是怎么实现的,用 JWT 的思想的话,过期时间是加密保存在 token 里的,这样可以 session 没过期就只验证 session,session 过期了就检查 token 是否过期,没有过期就创建一个新 session。

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

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

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

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

© 2021 V2EX