V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zhouhuab
V2EX  ›  程序员

现在 session 是主流还是 jwt + refresh token 是主流?

  •  
  •   zhouhuab · 2 天前 · 3397 次点击

    徘徊了好几年,看了好多文章,也问了 chatgpt ,现在想看看生产中用到都是啥?

    34 条回复    2026-04-07 08:53:43 +08:00
    crysislinux
        1
    crysislinux  
       2 天前 via Android
    中大厂肯定是后端 session
    w568w
        2
    w568w  
       2 天前
    我没搞懂这两种方案有什么区别吗? jwt + refresh token 不只是 session 的一种实现方式么。
    gitrebase
        3
    gitrebase  
       2 天前
    refresh token 感觉更多用在开放平台 API 的认证/授权上,如果只是正常的用户登录流程,就用 session 就好,但感觉两者之间也没什么技术复杂度的差别,熟悉哪个用哪个就好
    bwijn
        4
    bwijn  
       2 天前
    claude 是主流
    blushyes
        5
    blushyes  
       2 天前
    @w568w 一个是有状态一个是无状态。
    diudiuu
        6
    diudiuu  
       2 天前
    自己控制上 两个结合
    yungo8
        7
    yungo8  
       2 天前 via Android   ❤️ 1
    这种最佳实践的只能大佬们回答了,说实话,有多少人是做过手机中那些常用 app 保持登录状态,最多也就是对接登录点一下。本人搞的登录,不好意思,就一个 token 走天下,没有 refresh token ,过期了麻烦用户再登录🐶
    way2explore2
        8
    way2explore2  
       2 天前
    看需求了,APP 多 JWT + Fresh
    Web 多用 Session
    craftsmanship
        9
    craftsmanship  
       2 天前 via Android
    @yungo8 保持登录状态这个 我觉得可以请 @Livid 来讲一下 V 站的设计作为参考
    w568w
        10
    w568w  
       2 天前
    @blushyes 我理解现在很多 JWT 的实践其实是综合的,JWT 本身不会携带全部状态信息(可能只有个 id ),实际的鉴权和状态提取还是在服务端完成的。

    毕竟无状态就不可 revoke ,这个风险太大了
    liuxu
        11
    liuxu  
       2 天前
    oauth2
    onedge
        12
    onedge  
       2 天前
    @yungo8 简单粗暴
    onedge
        13
    onedge  
       2 天前
    @way2explore2 web 现在也是 jwt+refresh
    poly1911
        14
    poly1911  
       2 天前
    jwt
    jadeborner
        15
    jadeborner  
       2 天前 via Android
    当然是 session,我经常把 cookie 导出到另一台机器用,省得再登陆一次
    streamrx
        16
    streamrx  
       2 天前 via iPhone
    单个客户端种类就 session
    imnpc
        17
    imnpc  
       2 天前
    前后端分离 JWT+ token 不分离 session
    fovecifer
        18
    fovecifer  
       2 天前
    我觉得你把概念搞混了,我觉得应该是中心化的管理方案和去中心化的管理方案
    leegradyllljjjj
        19
    leegradyllljjjj  
       2 天前
    两种都用了是什么水平
    Rache1
        20
    Rache1  
       2 天前
    看过这么多任务机器人、代挂脚本之类的东西,就能看出来,第一方的话大厂们都还在用 Cookie 那一套,如无必要,勿增实体
    Bingchunmoli
        21
    Bingchunmoli  
       2 天前
    混合 jwt+session 算什么, 还有看见很多大肠的 token 不是标准的 jwt 是用了自己私有算法还是什么 其他的,jwt 确实太长了
    ZeroDu
        22
    ZeroDu  
       2 天前
    用最简单的方案,生成的 uuid 然后存到 redis
    netnr
        23
    netnr  
       2 天前
    同时支持 Cookie 和 JWT
    zed1018
        24
    zed1018  
       2 天前
    @w568w #10 JWT 设计思路本身也是不支持 revoke ,要 revoke 就得加黑名单,然后分布式服务各自要集中查询黑名单,那还不如一开始就不要用 JWT 。所以一般我理解的用 JWT 就不考虑 revoke ,而是把单个 token 时间给的足够短,然后 revoke refresh token 。
    Oktfolio
        25
    Oktfolio  
       2 天前
    大厂都还是 cookie + 随机字符串( sessionid )
    giter
        26
    giter  
       2 天前
    @Oktfolio 这么多年前就开发了的产品,使用 Cookie 或 Session 都正常。后面开发的项目基本都是双 Token 机制
    BadAngel
        27
    BadAngel  
       2 天前
    今后不应该是 阅后即焚 吗
    way2explore2
        28
    way2explore2  
       2 天前
    @zed1018 正解,
    sunwangme
        29
    sunwangme  
       2 天前
    我自己现在更偏向按场景分,不会把 jwt + refresh token 当默认答案。

    如果是传统 Web 、内部系统、或者 BFF 比较重的场景,我通常还是 session / cookie + 服务端 session id 。原因很简单:可控,能随时 revoke ,权限变更、强退、风控这些处理起来都顺手。

    如果是多端客户端、开放 API 、跨域比较多,才更容易上 access token + refresh token 。但我实际落地时也很少做成“纯无状态 jwt”,最后还是会在服务端保留一层会话或版本校验,不然撤销登录和风控会很别扭。

    所以我理解现在不是谁成了绝对主流,而是:
    Web / 第一方业务:session 依然很常见
    多端 / 开放场景:token 双令牌更多
    生产里更常见的其实是混合用,优先选自己最容易控风险的方案。
    yungo8
        30
    yungo8  
       2 天前   ❤️ 1
    @craftsmanship 主张的网页端我没看出来。但是给第三方 app 提供的接口,手动创建的 token 是固定 180 天有效期的,具体见文档 https://nm.100875.xyz/help/personal-access-token
    v2Geeker
        31
    v2Geeker  
       1 天前
    OIDC
    uni
        32
    uni  
       1 天前
    3 楼正解,api 用 jwt ,用户登录流程用 session 。我现在做的小程序,给小程序用的 api 用 jwt ,小程序的 web 后台用的 session
    c3de3f21
        33
    c3de3f21  
       21 小时 17 分钟前
    真的有无状态应用吗,但凡上个 redis 都不算无状态吧
    flytsuki
        34
    flytsuki  
       2 小时 40 分钟前
    jwt 生成 token,redis 控制有效期
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5989 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:33 · PVG 11:33 · LAX 20:33 · JFK 23:33
    ♥ Do have faith in what you're doing.