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

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

  •  
  •   daijinming · 125 天前 · 1300 次点击
    这是一个创建于 125 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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