探讨一个用户登录会话保存方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
daijinming

探讨一个用户登录会话保存方案

  •  
  •   daijinming Jun 18, 2019 3364 views
    This topic created in 2505 days ago, the information mentioned may be changed or developed.

    在 MVC 后台渲染的场景,我采用后台 session 存储用户会话,在前后台分离的场景中,一般都是前后台分别部署,需要跨域,一般通过 JWT 存储用户信息。最近在处理一种情况,dotnet + spa ( angular ) ,前后台一起开发,部署在一起,不用跨域,所以想和大家探讨下,如果你来设计这个方案,你觉得如何存储用户会话好些,后台 session 亦或是 jwt 前台存储,或是其他

    22 replies    2019-06-21 09:15:00 +08:00
    Carseason
        1
    Carseason  
       Jun 18, 2019 via iPhone
    jwt 就可以了,以后扩展方便
    wenzhoou
        2
    wenzhoou  
       Jun 18, 2019 via Android
    英语 session===汉语的会话
    daijinming
        3
    daijinming  
    OP
       Jun 18, 2019
    @wenzhoou 我说的 session 是 技术范畴的,所以用英语区分
    wenzhoou
        4
    wenzhoou  
       Jun 18, 2019 via Android
    你打算新造一个词吗?说说你的 session 的内涵和外延。说说你的会话的内涵和外延。
    daijinming
        5
    daijinming  
    OP
       Jun 18, 2019
    @wenzhoou 我仅仅指的是 asp.net 中的 session 对象,代表用户登录的会话状态的对象
    gxm44
        6
    gxm44  
       Jun 18, 2019
    主要看 Web App 的架构与业务需求吧,JWT 无状态,分布式,sso 会省心一点,而且 server 端不需要维护 session,资源使用少。直接用 server 端的 session,简单快捷。
    daijinming
        7
    daijinming  
    OP
       Jun 18, 2019
    @gxm44 如果设计业务系统的话,我会采用成熟的 identityserver4,这次只是开发一个小工具类的网站
    daijinming
        8
    daijinming  
    OP
       Jun 18, 2019
    @gxm44 之前如果都是 MVC 我就不犹豫了,现在采用 SPA 做前台,确实有点让人犹豫
    wenzhoou
        9
    wenzhoou  
       Jun 18, 2019 via Android   1
    无状态 JWT:JWT 中存储所有认证授权信息,服务端不存储任何相关数据。
    有状态 JWT:JWT 中存储认证授权信息的 ID,具体数据存储在服务端。
    Session / Cookie:传统的 Session / Cookie 存储方式,有几种实现形式:
    签名的 Cookie 中直接存储 Session 信息,服务端不存储 Session 信息(与无状态 JWT 类似)
    签名的 Cookie 中存储 Session ID,服务端存储 Session 信息(与有状态 JWT 类似)
    Vegetable
        10
    Vegetable  
       Jun 18, 2019
    传统基于 cookie 的有状态的 session,许人都说其实本身是很好的方案,但是现实就是,jwt 理解起来更简单,适应的范围更广,导致我现在做什么带登录的都直接走 jwt,根本不去考虑别的方案,哪怕不是最优的选择,对开发团队来说也是最熟悉的.
    daijinming
        11
    daijinming  
    OP
       Jun 18, 2019
    @wenzhoou Cookie 过期的话,浏览器会不会自动删除
    di1012
        12
    di1012  
       Jun 18, 2019
    可以考虑在数据库中存储 session,这样就不用考虑丢失和跨域的问题了
    gxm44
        13
    gxm44  
       Jun 18, 2019
    @daijinming 我做的 SPA 都是把 JWT 扔 Cookie 里的,我觉得吧楼主的 case,用自己最熟的,肯定没问题。
    wenzhoou
        14
    wenzhoou  
       Jun 18, 2019 via Android
    @daijinming 可是反过来说,服务器端不能控制 jwt 前台存储时的生命周期啊。
    wenzhoou
        15
    wenzhoou  
       Jun 18, 2019 via Android
    所以我觉得不跨域的 spa,用哪种都行啊。或者你应该考虑别的方面吧。
    1010543618
        16
    1010543618  
       Jun 18, 2019
    不是特别懂,感觉 jwt + 微服务前后端都很爽
    x2016
        17
    x2016  
       Jun 19, 2019
    JWT
    x2016
        18
    x2016  
       Jun 19, 2019
    用 Redis 存
    kcer
        19
    kcer  
       Jun 19, 2019
    jwt + Redis
    thinkif
        20
    thinkif  
       Jun 21, 2019
    不跨域的话,也不扩展多端的情况下,session 应该是最简单的,这也可能是你在它与 JWT 之间犹豫的地方
    daijinming
        21
    daijinming  
    OP
       Jun 21, 2019
    @thinkif 主要前台还是 angularjs,总觉得不是一个时代的产物
    thinkif
        22
    thinkif  
       Jun 21, 2019
    @daijinming #21
    话虽如此,但其实跟前端关系并不大,鉴权都在 API 中做,前端只需要根据 API 返回的内容(包括路由等)做好处理即可
    About     Help     Advertise     Blog     API     FAQ     Solana     1094 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 22:59 PVG 06:59 LAX 15:59 JFK 18:59
    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