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
ChangHaoWei
V2EX  ›  Python

flask-login 的一些问题

  •  
  •   ChangHaoWei · 2017-07-07 10:05:35 +08:00 · 1479 次点击
    这是一个创建于 2485 天前的主题,其中的信息可能已经有所发展或是发生改变。

    flask-login 怎么确保用户登陆后,从异地登陆就会把上一次登陆的状态失效?

    pekingzcc
        1
    pekingzcc  
       2017-07-07 15:36:04 +08:00
    flask-login 中有个 Session Protection 机制,主要是针对 session 篡改或偷盗,默认有两种模式,basic 和 strong,默认是 basic 模式。这个机制的实现是这样的:每一个请求过来时,会针对用户端产生一个对应的标识符(一般是 hash(ip+user-agent)),如果这个 session 没有标识符,会做存储,如果有,比对成功的话,这个 request 就是成功的。basic 模式与 strong 模式区别在于:basic 模式下,如果发现 session 比对标识符不成功,这个 session 会被标记为 non-fresh,而在 strong 模式下,整个 session 直接删除
    ChangHaoWei
        2
    ChangHaoWei  
    OP
       2017-07-07 22:06:23 +08:00
    @pekingzcc 谢谢,I have figured it out。 我的解决方案是这样的,session 在请求上下文里是 client session,他会在处理后存在用户的 cookies 里面,而 login_user 操作会生成以登陆用户 ip 和 useragent 为原始数据的 sha256 字符串。存在 session[_id].

    我的操作是在 login_user 操作后将当前登陆的时间写到 session 里面,并将登陆时间写到 server session (我是用的 mongodb ),因为以前登陆的用户的 session 中的登陆时间值是上次登陆的,,不匹配那就登陆状态失效喽。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2605 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:34 · PVG 09:34 · LAX 18:34 · JFK 21:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.