V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
chunkingName
V2EX  ›  问与答

请问后端大佬是如何通过 token 获取用户信息的

  •  
  •   chunkingName · 2023-03-19 22:40:03 +08:00 · 2110 次点击
    这是一个创建于 606 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前两天面试,面试官问我后端是如何通过 token 拿到用户信息的,我说先查 token 是否失效,然后根据 token 查 userId 但我应该是回答错了,然后我上网搜答案,搜出来的也千奇百怪,还有说前端可以根据 token 直接拿到用户信息的,有没有后端大佬指教以下,后端生成 token 和验证并使用 token 的流程 PS:我是前端

    13 条回复    2023-03-20 12:30:12 +08:00
    mooyo
        1
    mooyo  
       2023-03-19 22:47:51 +08:00
    JWT token 可以直接把 userID 啥的非敏感信息塞进去方便拿出来,不过怎么设计都可以吧 没啥绝对的对和错。
    renmu
        2
    renmu  
       2023-03-19 22:51:59 +08:00 via Android
    如果是 jwt ,那直接 base64 解码 payload 就可以了。
    ila
        3
    ila  
       2023-03-20 07:59:13 +08:00 via Android
    后端编码了个人信息成 token,返回给前端,
    前端带着 token 请求后端,
    后端解码 token,得到信息。
    PerFectTime
        4
    PerFectTime  
       2023-03-20 08:26:22 +08:00
    jwt 的 jti 是用户 id 或者与用户 id 有关的数据,直接查就好了
    kongkx
        5
    kongkx  
       2023-03-20 09:01:15 +08:00 via iPhone
    个人觉得这个问题问得很含糊,没有上下文无法作答。前端面试,可能问的是前后端数据传递吧,比如后端是如何获取 token 的?
    chunkingName
        6
    chunkingName  
    OP
       2023-03-20 09:13:52 +08:00
    @kongkx 不是 他问的就是后端如何根据 token 拿到用户信息的,可能他想听到的答案就 jwt 吧
    connectError
        7
    connectError  
       2023-03-20 09:24:52 +08:00
    @chunkingName #6 最近在学习前后端分离的项目,后端在校验用户登录时候,如果校验成功,一般根据用户的 ID 生成一个 token 返回给前端,在后续访问时候前端页面携带 token 访问对应接口就行了,这样前端并不需要关心后端的具体校验规则啥的(尽量描述简单省略了权限校验)。
    xuelu520
        8
    xuelu520  
       2023-03-20 09:29:23 +08:00
    jwt 就直接 base64 解了,不是的话,就是 redis 等 nosql 来取用户数据了
    sss15
        9
    sss15  
       2023-03-20 09:58:38 +08:00
    我们为了防止中间人攻击,在 jwt 里放的是一串 uuid ,然后 uuid 作为 key 在 redis 里存放了真实的用户信息
    dengshen
        10
    dengshen  
       2023-03-20 10:07:00 +08:00
    前端还问怎么解 token! !!
    luckyrayyy
        11
    luckyrayyy  
       2023-03-20 10:32:32 +08:00
    token 和 jwt 有啥关系,这不是两种方式么。token 是用户登录的时候,把用户 id 或者一些其他信息放在一起编码后返回给前端的。前端能不能解析看你怎么设计的编码方式,如果直接明文的自然前端也可以拿到用户信息。
    kongkx
        12
    kongkx  
       2023-03-20 10:50:13 +08:00 via iPhone
    @chunkingName 我只是觉得他问得不好,没别的意思。 简单的说就是 key:value 但中间怎么走花样多得去了。 各种 encode encrypt gateway proxy db 想怎么吹都行
    IvanLi127
        13
    IvanLi127  
       2023-03-20 12:30:12 +08:00 via Android
    token 种类那么多,流程都能出来好多版本,这问题没其他上下文的话,确实很配一堆乱七八糟的答案。。。

    光签发 token 的地方就能有好多种,他这问题最简单的答案就是 op 说的,后端提取到 token ,查映射关系找到用户信息,然后读取用户信息。怎么提取,怎么查关系,从什么地方读用户信息都有可能,看具体实现。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2766 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 12:55 · PVG 20:55 · LAX 04:55 · JFK 07:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.