wxd92

JWT 密码失效当允许用户修改用户名

  •  
  •   wxd92 · Aug 28, 2020 · 3208 views
    This topic created in 2263 days ago, the information mentioned may be changed or developed.

    JWT 生成的 token 的 payload 包含用户名信息;如果我们允许用户修改用户名,token 会立即失效,那我们是不是只能让用户重新登录然后获取新的 token? 有没有大佬有更好的方法?

    12 replies  •  2020-08-28 23:47:52 +08:00
    optional
    optional
    Aug 28, 2020❤️1
    1
    用户名会改那就 jwt 里放用户 id 啊,,难不成用户名是主键不成?
    a132811
    a132811
    Aug 28, 2020❤️1
    2
    让 token 失效——只能让用户重新登录然后获取新的 token 。可以用 redis 做缓存,删除缓存 token 就失效

    让 token 不失效——就不要把用户名生成 token,可以用户的唯一 Id 作 token 呀。
    renmu123
    renmu123
    Aug 28, 2020 via Android❤️1
    3
    修改用户名的时候返回一个更新过的 token
    iseki
    iseki
    Aug 28, 2020 via Android
    4
    所以你们使用用户名作为用户的唯一标识而不是一个相对于用户透明的唯一 id 吗
    wxd92
    wxd92
    OP
    Aug 28, 2020
    5
    @optional jwt 里也包含 user id, 除了这个还包含用户名
    wxd92
    wxd92
    OP
    Aug 28, 2020
    6
    @a132811 让 token 不失效——就不要把用户名生成 token,可以用户的唯一 Id 作 token 呀。 ----如果还包含用户名呢?除了 id
    StevenTong
    StevenTong
    Aug 28, 2020❤️1
    7
    2 楼已经说了两个常用的方案了。

    1. jwt token 使用 redis token store 之类的管理起来,修改 username 之后 revoke 当前 token 。但是这样就违背了 jwt token 的设计初衷了。
    2.username 不是用户名而是一个 user unique id,用户名自己通过 userinfo 去拉取。
    wxd92
    wxd92
    OP
    Aug 28, 2020
    8
    @StevenTong 源码生成 payload 时,包含了 username

    def jwt_payload_handler(user):

    payload = {
    'user_id': user.pk,
    'username': username,
    'exp': datetime.utcnow() + api_settings.JWT_EXPIRATION_DELTA
    }
    wxd92
    wxd92
    OP
    Aug 28, 2020
    9
    @renmu123 后端触发 token refresh 是不是不好做?(不懂
    wxd92
    wxd92
    OP
    Aug 28, 2020
    10
    @a132811 就不要把用户名生成 token ----这个如果不必须用户名的话,可行的。
    jakes
    jakes
    Aug 28, 2020❤️1
    11
    token 不要放 username 啊,user id 已经可以表示用户了为什么非得把用户名这种会变更的放 token 里?放 Redis 里通过 user id 取不香吗?
    jakes
    jakes
    Aug 28, 2020
    12
    不要想着非得在 payload 里放东西
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1643 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 13:08 · PVG 21:08 · LAX 05:08 · JFK 08:08
    ♥ Do have faith in what you're doing.