需求是要求前端研究一下如何给登录认证自动续期

52 天前
 11000111010
最近开发一个插件,有一个优化需求。想让前端来做。要求做一个登录状态( token )的自动续期。。。
有点无语。。 服务端该干的事。让前端干。。
那行吧。我理解的就是 用全局 interceptors 响应拦截器去在 API 调用的时候查到服务端返回 401 或者单独的认证过期的 errorCode 之类的。。进行拦截然后拿到上一次用户登录的账号密码(还要先偷偷记在用户浏览器插件的本地存储里面) 自动调用一次登录然后把 token 刷掉。。这样子?。 有人给点建议吗。。。
3043 次点击
所在节点    程序员
34 条回复
maocat
52 天前
这个是前后端都得做的事啊,双 token 机制,建议了解一下
lpe234
52 天前
accessToken refreshToken?
javalaw2010
52 天前
续期这事儿就该前端干,谁来我都这套说法。

技术方案上,token 应该有两个有效期 expire_at 和 refresh_expire_at, 后端应该提供一个 refresh 接口,当 token 过了 expire_at 有效期但是尚未到达 refresh_expire_at 有效期时,token 的鉴权能力失效,但是仍然可以访问 refresh 接口换取新的 token 。
lambdaq
52 天前
要我说以前 Cookie: Set-Cookie: 明明玩得好好的,非得自己手搓 Authentication: 不嫌麻烦。。。。
11000111010
52 天前
双 token 这个确实没问题 如果真是这样子的话我就没有问题了 。。问题是。 服务端提供的整套登录接口以及用户认证逻辑全都是单一的一个 token 认证结构。 没有双 token 。也就是说。前端这边有一个登录接口 拿到的是返回的单次登录认证的一个 token 。 过期了。现在怎么办。。。
fredweili
52 天前
去看看 OAuth 协议
Curtion
52 天前
@javalaw2010 额,你把后端要干的事情都干完了,剩下可不就是前端干。OP 的说法看起来就是只有一个 token, 前端来干可不就只能保存用户密码,然后在过期的时候调用登录接口,这样做还要求登录接口不能有图形验证码这种东西。
bagel
52 天前
@javalaw2010 你都没搞懂双 token 的精髓在哪,分成两个 token 就是为了隔离,refresh token 只在续期时用,被截获的概率大大降低。用同一个 token 去续期,每个请求都能截获一个能续期的 token ,风险大增。
dfkjgklfdjg
52 天前
如果有 token 续签的机制,前端定期请求一个查询接口保持一下就好了。
纯前端去做太蠢了……

也不知道你的插件是什么插件,如果是内部使用的插件,后端搭配一起改造一下 refreshToken 不就好了嘛。
11000111010
52 天前
@javalaw2010 好办法。 前提是后端给我提供一个换 token 的接口。我这就去找后端打架🤣
lneoi
52 天前
让后端发个续期信息给你, 通过信息置换出新 token 或者直接拿到 token, 啥都不改就要续期, 要不然就扔掉安全性吧
kcccc
52 天前
总需要后端配合一下才能做吧。
11000111010
52 天前
最新消息, 打赢了! 领导一刀切,什么 token 续期 先滚蛋。token 过期了滚回去重新登录🤣
sthwrong
52 天前
双 token 最佳,实在没法子只能定时器,但太脏了。
xubingok
52 天前
抛开单 token 的不安全性不谈的话.

你不用等过期,定时主动帮用户刷一下 token 不就完事了...

假设单 token 的有效期是 1 天,你就每天刷.
如果是 1 个月,你就每个月刷一次.
xiaofeixiang
52 天前
双 token ,前端要做完善还挺多事情的,要考虑并发请求和刷新之后重新请求的处理。不过这些现在方案都挺成熟了,可以去了解一下
SanjinGG
52 天前
op 问题双 token 就能实现吧,但我想问下怎么让 accessToken 和 refreshToken 长期有效?好像 b 站和油管没触发风控完全不会重新登录,是每次进入的时候都刷新两个 token 时效吗?如果是应该在什么时候触发刷新?
javalaw2010
52 天前
@bagel 双 token 对 OP 的业务来说,前后端的改造都太大了。我认为安全是相对的,并不是所有业务都需要双 token 机制,只要保证信道是 https 的,对绝大部分业务来说,单 token 机制已经足够,上古时代大家都用 Cookie/Session 鉴权也都过来了。而且 OP 公司一直以来都用的单 token ,这要是改双 token ,不知道多少开发要骂娘。
Need4more
52 天前
后端做,单 token ,认证拦截器里自动续期
skiy
52 天前
先问问阿里云和腾讯云再说…这俩货,直接就是,要求重新登录…

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1147321

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX