JWT+redis 能替代 session 了吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiadada

JWT+redis 能替代 session 了吗?

  •  
  •   xiadada 2020 年 4 月 26 日 3765 次点击
    这是一个创建于 2186 天前的主题,其中的信息可能已经有所发展或是发生改变。

    session 最大的问题在于没有办法降级。

    JWT 降级的手段就很多了,Redis 用来做补偿,比如生命周期的管理。踢掉用户等等...

    基于 JWT 的方案对不 session 还有什么缺点呢?

    8 条回复    2020-04-26 18:55:16 +08:00
    bolide2005
        1
    bolide2005  
       2020 年 4 月 26 日
    是说每次业务鉴权都要依赖 redis 吗?在 redis 记录发出去的 jwt ?或者是在 redis 里记录作废的 jwt ?好像和 token 这个东西设计的初衷不太一致……
    also24
        2
    also24  
       2020 年 4 月 26 日 via Android
    also24
        3
    also24  
       2020 年 4 月 26 日 via Android
    我猜测楼主的思路是:
    使用 JWT 做基础的鉴权,同时使用 Redis 做补充管理(例如通过黑名单的方式提前吊销某 token )

    但这样其实抛弃了 JWT 或者说 Client sie session 的不少优势:
    Redis 的引入导致需要依赖服务端。
    服务端的引入导致需要专门处理 session 共享。

    以及,如果想实现完整的生命周期管理,黑名单未必够用,可能需要引入白名单,此时这个方案实际上已经变成了 Server side session 了。
    xiadada
        4
    xiadada  
    OP
       2020 年 4 月 26 日
    @also24 是变成服务端 session 了, 但是如果 Redis 挂了(只是一个服务端依赖的代表),不影响正常业务走下去, 而 Redis 挂了是小概率事件。 这套方案可以保证原来的 session 服务一定不挂。 最后一点一定不挂很吸引人啊。
    also24
        5
    also24  
       2020 年 4 月 26 日 via Android
    @xiadada
    所谓 “一定不挂”,其实对应的是 “ session 管理未必生效” ,这是非常不严谨的。

    如果你做了 session 管理功能,就不应该让它处于一种不确定是否能用的状态。

    从这个角度来看,如果 Redis 挂了,那理应将整个 session 认证部分停掉,而不是 “带伤上阵” 。
    xiadada
        6
    xiadada  
    OP
       2020 年 4 月 26 日
    @also24 我能 get 到你的点, 但是在业务上,我们是希望能有降级方案的。 我的管理功能只是 3 个 9,但是「校验」用户身份的功能可以做到 100%可靠。
    also24
        7
    also24  
       2020 年 4 月 26 日 via Android   1
    当然,并不是说完全否定这种模式,如果有这种不太严谨的业务场景,那用用倒也无妨。

    本质上来说,其实就是分了两种状态。
    在日常状态下,将 client side session 的 session data 作为 server side session 的 session id 使用。

    在 Redis 挂掉等奇怪的状态下,退化为完全使用 client side session 机制。
    also24
        8
    also24  
       2020 年 4 月 26 日 via Android
    @xiadada
    对,这个事儿其实就是看业务场景,业务场景能接受那怎样都好说,

    在日常状态下,这样其实吸取了两边的短处,性能、流量都有更多的压力。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5666 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 02:41 PVG 10:41 LAX 19:41 JFK 22:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86