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

前端, token 和 refreshToken 疑问

  •  
  •   yantianqi · 2020-07-13 11:47:48 +08:00 · 2737 次点击
    这是一个创建于 1579 天前的主题,其中的信息可能已经有所发展或是发生改变。

    token 和 refreshToken 存于 cookie 中

    token 两小时有效,refreshToken 7 天有效

    token 失效后 refreshToken 刷新 token

    如果用户操作中 refreshToken 失效了,如何判断呢?区别于用户第一次进入的未登录?

    9 条回复    2020-07-13 13:15:45 +08:00
    rioshikelong121
        1
    rioshikelong121  
       2020-07-13 11:49:41 +08:00
    后端判断吧。 后端可以区分 refresh token 的时间过期 和 cookie 中不包含 token 和 refresh token 的情况(未登录)。
    baiyi
        2
    baiyi  
       2020-07-13 11:54:58 +08:00
    刷新 token 时发现 refreshToken 也失效,则清除前端登录状态,让用户重新登录
    sunxiansong
        3
    sunxiansong  
       2020-07-13 12:06:23 +08:00
    判断逻辑和后端协商啊,给个确定的状态码给个错误码,反正能确定是 refreshToken 失效就行
    Kyle18Tang
        4
    Kyle18Tang  
       2020-07-13 12:13:19 +08:00
    两个都失效后端就应该返回 401,你前端判断 HTTP 状态就可以了。
    nvkou
        5
    nvkou  
       2020-07-13 12:14:02 +08:00 via Android
    你把各种 token 用点.分割开,把第二部分用 base64 解码。里面就有过期时间
    liuzhaowei55
        6
    liuzhaowei55  
       2020-07-13 12:14:14 +08:00 via iPhone
    refresh_token 不应该每次传吧,应该第一次授权获得了 refresh_token 然后存储本地,当服务器返回 access_token 过期的时候,用 refresh_token 去刷新 access_token,我是这样理解的,一般情况下服务器也会顺带刷新 refresh_token 的过期时间。
    kop1989
        7
    kop1989  
       2020-07-13 12:15:30 +08:00
    1 、token,refreshToken 是否失效应该交由后台判断,不应你来判断。
    2 、在不刷新 token 的场景下,应该是无法发现 refreshToken 失效的,如果发现了,那这个 refreshToken 的业务意义就很让人不解。
    3 、在 1 和 2 的前提下,也就是刷新 token 才发现 refreshtoken 失效,那么应该不存在你的问题。(因为未登录是不会通过 refreshToken 刷新 token 的)。
    LeeSeoung
        8
    LeeSeoung  
       2020-07-13 12:58:28 +08:00
    都让后端判断,前端只管解析后端返回的是否有效凭据
    hantsy
        9
    hantsy  
       2020-07-13 13:15:45 +08:00
    用 OAuth2 标准的话,前端大把 OAuth2 封装( Angular,react ),更简单的就是用 Auth0,Okta 等。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2514 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:29 · PVG 09:29 · LAX 17:29 · JFK 20:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.