采用 Tokens 认证的接口如何保证服务端和客户端的一致性 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
pengfei
V2EX    程序员

采用 Tokens 认证的接口如何保证服务端和客户端的一致性

  •  
  •   pengfei 2017-09-20 17:49:22 +08:00 3171 次点击
    这是一个创建于 3031 天前的主题,其中的信息可能已经有所发展或是发生改变。

    标题不是很明确, 请看描述

    最近正在用spring boot + Vue.js 撸一个 web 应用, 想省点事将webapp共用一个后台, 用户认证部分采用服务端生成 tokens 的方式实现. tokens 参照 jwt 标准生成. 遇到两个问题不知道怎么解决

    1. 在服务端生成 token 时设定超时时间, 用户在超时范围内一直在不间断使用的话, 到了超时的时候服务器要不要为客户端生成新的 token, 并且服务器如何确定是真的客户端在使用, 而不是其他人通过网络手段获取某客户端的 token 从而一直在使用
    2. 客户端主动退出登录, 之前的 token 对于服务器来说, 只要在超时范围内就一直生效, 如何在服务端禁用

    暂时应对方法:

    1. 忽略, 超时就是超时
    2. 在 server 端生成 jwt 时有一个 jti 是其唯一身份标识, 缓存该标识, 收到客户端退出请求时, 通过 jti 对 token 处理, 但是这样的话就得在 server 端存储 token 部分信息, 就感觉和 session 做认证差不多了, 有没有其他解决方式
    5 条回复    2017-09-21 12:24:36 +08:00
    Athrob
        1
    Athrob  
       2017-09-21 07:27:17 +08:00
    我也想知道, 目前我是在服务端缓存了 token 的部分信息的. 每次请求都判断是否合法.
    pengfei
        2
    pengfei  
    OP
       2017-09-21 09:40:55 +08:00
    @Athrob 感觉这样做有点和 jwt 的标准相悖了 不知道大佬们有木有更好的解决方法
    > This is a stateless authentication mechanism as the user state is never saved in server memory
    Athrob
        3
    Athrob  
       2017-09-21 10:17:35 +08:00
    @pengfei #2 他说的无状态应该是不靠服务端来获取用户状态, 而是直接存在 token 里, 是这样吗?
    session 的话还要根据 session id 去服务器获取用户状态.
    Athrob
        4
    Athrob  
       2017-09-21 10:21:13 +08:00
    对这些概念不是很了解, 能完成需求就好吧, 不要太在意标准.
    pengfei
        5
    pengfei  
    OP
       2017-09-21 12:24:36 +08:00
    @Athrob 现在的做法也是这样, 没接触过互联网项目, 只能采用传统的做法了. 网上搜了下, 感觉自己钻牛角尖了, jwt 这种方式保证了任何客户端的请求都携带了能够证明自己的信息, 只要我们将服务器端缓存 jti 的部分能让所有 server 能关联, 那也变相的实现: 客户端各个请求独立并包含所有目标服务器所理解的请求信息

    > Client 发送的请求必须包含有能够让服务器理解请求的全部信息,包括自己的状态信息。使得一个 Client 的 Web 请求能够被任何可用的 Server 应答,从而将 Web 系统扩展到大量的 Client 中
    -- http://blog.csdn.net/Jmilk/article/details/50461577
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3705 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 04:16 PVG 12:16 LAX 20:16 JFK 23:16
    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