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

52 天前
 11000111010
最近开发一个插件,有一个优化需求。想让前端来做。要求做一个登录状态( token )的自动续期。。。
有点无语。。 服务端该干的事。让前端干。。
那行吧。我理解的就是 用全局 interceptors 响应拦截器去在 API 调用的时候查到服务端返回 401 或者单独的认证过期的 errorCode 之类的。。进行拦截然后拿到上一次用户登录的账号密码(还要先偷偷记在用户浏览器插件的本地存储里面) 自动调用一次登录然后把 token 刷掉。。这样子?。 有人给点建议吗。。。
3043 次点击
所在节点    程序员
34 条回复
yeqizhang
52 天前
恰好最近找了下双 token 的资料,但感觉和这个楼里面说的不太一样……refreshtoken 是给终端用的吗?
accelerator1
52 天前
@lambdaq chrome 对跨域 cookie 的限制已经越来越多了,除非不提供对外服务,不然使用 token 是必然的。
ndxxx
52 天前
@javalaw2010 #3 word 哥,没有什么是绝对的。refresh_token 能不能放在 cookie 里且 HttpOny ?如果可以是不是更科学是不是需要后端处理?
ndxxx
52 天前
@yeqizhang #21 理论上 ttl 长的的 refresh _token 应该被放在 httpOnly 的 cookie 里,access_token 放在 localstorage 里面,但是实践中很多时候 access_token 和 refresh_token 都放在了 localstorage 里了。这两种实现方式都是双 token ,后者前后端分离更友好点。
blackmirror
52 天前
@javalaw2010 Refresh 接口不就是后端写的 怎么就纯前端了
lambdaq
52 天前
@accelerator1 限制是多,难不成比 Authentication 头还多?
blackmirror
52 天前
纯前端方法每晚偷偷调用登录接口更新 token 参考某公司车机清积碳功能
seth19960929
52 天前
@yeqizhang 和终端没关系, 任意客户端(app, 浏览器, 甚至服务端也是客户端(相对于别人的服务))



// 上个伪代码
var tokenCache, refreshCache


beforeMiddleware = func(req) {
----req.headers.set('token', tokenCache.get())
}
afterMiddleware = func (req, resp) {
----// 内部统一或者三方服务的公共状态码
---- if resp.statusCode == 401 {
--------// 上锁, 防止其他请求用到过期的 token, 也可以不锁, 看需求
--------tokenCache.lock()
--------resp = http.withOutMiddleware().post(refreshTokenUrl, {"token": refreshCache.get()})
--------refreshCache.set(resp.getRefreshToken())
--------tokenCache.unlock()
----}
}

http.addMiddleware(beforeMiddleware , afterMiddleware)
http.get(api)
freezebreze
52 天前
那就双话事人咯
HENQIGUAI
52 天前
token 时间给长点,比什么都好使。
test00001
52 天前
@skiy 国内大部分厂商都是验证 active-timeout 的,超过这个时间不活跃或者 token 过期就要求重新登录。
unco020511
52 天前
accessToken refreshToken
neal1986
52 天前
今年新項目有完成這個功能 全公司也沒人理解我在寫什麼 真搞笑
superfatboy
51 天前
我司用的是 accessToken refreshToken

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

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

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

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

© 2021 V2EX