V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
mzmxcvbn
V2EX  ›  Python

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

  •  
  •   mzmxcvbn · 2018-05-21 10:28:11 +08:00 · 4275 次点击
    这是一个创建于 2365 天前的主题,其中的信息可能已经有所发展或是发生改变。

    当前用的 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 的过期时间就失效了。

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

    8 条回复    2018-05-22 09:26:37 +08:00
    fcten
        1
    fcten  
       2018-05-21 10:37:15 +08:00
    如果只使用 cookie 就可以完成登录,session 就没有作用
    如果想要使用 session 控制登录状态,在使用 cookie 登录的过程中就必须校验 session
    mzmxcvbn
        2
    mzmxcvbn  
    OP
       2018-05-21 10:55:30 +08:00
    @fcten 仔细想想好像是这么回事,用 cookie 登录时验证 session 的话,cookie 过期时间就没有效果了,看来要么就把 remember me token 的过期时间设置的比 session 过期时间短,要么就设置成一样的,才能实现两个需求
    lfzyx
        3
    lfzyx  
       2018-05-21 11:05:41 +08:00
    为什么要同时用 cookie 和 session ?
    woostundy
        4
    woostundy  
       2018-05-21 11:21:08 +08:00
    @lfzyx #3 cookie 记录 session 的 key
    mzmxcvbn
        5
    mzmxcvbn  
    OP
       2018-05-21 11:23:29 +08:00
    @lfzyx 因为想要实现登录界面的 remember me 按钮的选项,还有什么更好的方法吗
    zjengjie
        6
    zjengjie  
       2018-05-21 13:03:02 +08:00
    如果发现 token 没有过期,就自动创建一个新 session 不就可以了?
    mzmxcvbn
        7
    mzmxcvbn  
    OP
       2018-05-21 13:07:19 +08:00
    @zjengjie 对呀,现在就是这样,所以 sission 的过期时间就相当于无效了
    zjengjie
        8
    zjengjie  
       2018-05-22 09:26:37 +08:00
    @mzmxcvbn 不知道你的 token 是怎么实现的,用 JWT 的思想的话,过期时间是加密保存在 token 里的,这样可以 session 没过期就只验证 session,session 过期了就检查 token 是否过期,没有过期就创建一个新 session。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2714 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:41 · PVG 17:41 · LAX 01:41 · JFK 04:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.