V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bsg1992
V2EX  ›  程序员

授权验证选择 jwt 还是 session

  •  
  •   bsg1992 · 2019-10-23 17:32:02 +08:00 · 2606 次点击
    这是一个创建于 1860 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家开发一般在授权认证上使用为什么方案 1.jwt 优点是无状态,缺点 服务端不可控例如强制登出 2.session 优点 可控服务端为得维护状态,缺点 服务端有额外开销,分布式涉及到同步问题

    7 条回复    2019-10-23 18:02:53 +08:00
    workspace
        1
    workspace  
       2019-10-23 17:44:09 +08:00
    分布式涉及到同步问题,使用 redis 需要考虑吗
    luckyrayyy
        2
    luckyrayyy  
       2019-10-23 17:45:37 +08:00
    都说 jwt 适合单次或短时校验。
    另外 jwt 有点问题就是服务端不能主动控制登出,另外安全问题也得考虑。
    workspace
        3
    workspace  
       2019-10-23 17:46:01 +08:00
    只用过 session 觉得挺好哈哈 不同场景不同使用吧
    racecoder00
        4
    racecoder00  
       2019-10-23 17:49:00 +08:00
    就是鉴权选择分布式还是集中的吧
    tabris17
        5
    tabris17  
       2019-10-23 17:50:25 +08:00
    JWT 过期时间设短一点,对于实时性要求不高的应用足够了。
    passerbytiny
        6
    passerbytiny  
       2019-10-23 17:51:24 +08:00
    两者可以同时用的——JWT 外加用户状态用于首次登录,session 用于跟踪。当然 session 要基于 redis、文件或其它独立存储做定制,并且此时 JWT 仅相当于 cookie。
    abcbuzhiming
        7
    abcbuzhiming  
       2019-10-23 18:02:53 +08:00   ❤️ 1
    * jwt 只适合短期认证
    * jwt 是把状态保持从服务器移动到了客户端
    * 只要你不得不在服务端保存状态(比如你说的服务器可控强制踢出),那么 jwt 就不在合适,jwt 付出了传输内容膨胀的代价,就为了让服务器不保存状态,所以一切需要在服务器保存状态的需求,都不适合 jwt
    * session 你也可以不用,你完全可以自定义一种比 jwt 简单的多的 token,然后把 token 的保存后移到缓存层,这样你的 http 接入层仍然是无状态的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1158 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:50 · PVG 02:50 · LAX 10:50 · JFK 13:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.