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

flask 使用 token 鉴权,怎么获取用户的上次登录时间?

  •  
  •   kayseen · 2019-11-19 16:22:12 +08:00 · 3677 次点击
    这是一个创建于 1591 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,前后端分离,使用 token 鉴权,然后需求用户每一次登录,显示该用户的上次登录时间, 请教一下,使用 token 的话, 这个功能可以实现吗?

    15 条回复    2019-11-22 11:41:27 +08:00
    Hopetree
        1
    Hopetree  
       2019-11-19 16:41:30 +08:00
    我记得上次登录时间好像是记录到数据库里面的吧
    bwangel
        2
    bwangel  
       2019-11-19 16:44:08 +08:00   ❤️ 1
    上次登录时间和 Token 无关。

    Token 只做两件事情

    1. Token 能否被正确解码
    2. Token 是否过期

    你这个需求直接在 db 里面写一条记录就好了。
    lcy630409
        3
    lcy630409  
       2019-11-19 16:52:32 +08:00
    我的理解
    Token =session
    只不过 token 大多数用在禁 cookie 环境中
    flyingghost
        4
    flyingghost  
       2019-11-19 16:55:31 +08:00
    token 设置合理有效期,确保一次登录≈一次授权。
    那么授权 token 的时候记录一下就可以当做上一次登录时间。

    如果服务端管理 token 生命周期的话,提供合理的 token 刷新机制。
    如果 token 自描述生命周期的话,客户端一起参与实现 token/refreshtoken 机制。
    cominghome
        5
    cominghome  
       2019-11-19 16:57:12 +08:00
    同意 2 楼,这需求和 token 无关,无非是 login 模块多取、多写一条数据。
    yeyu123
        6
    yeyu123  
       2019-11-19 17:03:26 +08:00
    playload 里多加个字段就 ok
    bwangel
        7
    bwangel  
       2019-11-19 17:13:09 +08:00
    如果有这样的需求 根据登陆时间查询用户。

    那么把这个信息写在 Token 里面,查询就会非常麻烦,所以我觉得直接写 db 好一些。

    PS:登陆时间和用户活跃度无关,如果想根据用户的活跃度做一些事情,建议在开屏页里面加一个请求,记录用户的开屏时间,来表示用户的活跃度。
    CallMeReznov
        8
    CallMeReznov  
       2019-11-19 17:17:50 +08:00
    上次登录时间不是库里的吗?
    每次验证成功后更新下时间,下次验证后在更新?
    hyperbin
        9
    hyperbin  
       2019-11-19 17:27:46 +08:00 via Android
    @lcy630409 你理解错了
    kayseen
        10
    kayseen  
    OP
       2019-11-20 09:05:11 +08:00
    @Hopetree
    @bwangel
    @lcy630409
    @flyingghost
    @cominghome
    @yeyu123
    感谢各位,应该是要写入数据的,请问一下,
    写入时机是不是用户每一次成功调用 login 接口的时候啊?
    感谢各位,应该是要写入数据的,请问一下,
    写入时机是不是用户每一次成功调用 login 接口的时候啊?
    bwangel
        11
    bwangel  
       2019-11-20 13:41:45 +08:00
    @kayseen

    看你们的产品需求啊。

    “上次登录时间”从名字来看,就是每次登录的时候记录一次。

    但具体细节和你们 PM 商量啊,他要用这个时间做什么事情?这个时间什么时候记录比较好?
    kayseen
        12
    kayseen  
    OP
       2019-11-20 14:28:38 +08:00
    @bwangel
    但是使用 token 的话,就不需要登录接口了呀...
    浏览器记录了 token,直接就进入了,这个时候不就没法记录了...
    SjwNo1
        13
    SjwNo1  
       2019-11-20 15:02:05 +08:00
    鉴权成功直接更新 user 信息即可
    bwangel
        14
    bwangel  
       2019-11-20 16:36:35 +08:00
    @kayseen 前端需要请求接口获取 Token 啊,在获取 Token 的接口里面记录就好了。
    lolizeppelin
        15
    lolizeppelin  
       2019-11-22 11:41:27 +08:00
    认证归认证啊,总不能把用户信息都塞 token 里吧

    查询用户信息的时候获取到上次登陆时间就是,不要做塞 token 里这种事
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4089 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 05:22 · PVG 13:22 · LAX 22:22 · JFK 01:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.