个人前后端分离项目中 token 是怎么处理的

2021-08-16 13:35:25 +08:00
 zxCoder

登陆后后端发一个 token,前端存在 localstorage 里,然后前端的登录状态显示是根据这个 localstorage 里的 token 吗,那这样怎么判断 token 过期了呢,前端也要再存个 token 的有效时间吗?

3532 次点击
所在节点    问与答
29 条回复
ajaxfunction
2021-08-16 21:37:43 +08:00
最靠谱的就是 header 里带 token 啊,每次请求要校验 token 状态,
还有一种 jwt,我一直觉得不好用。
XTTX
2021-08-16 22:04:17 +08:00
@ajaxfunction header 带 token, token 可以存在内存里,避开存在 localstorage,就像 csrf token. 登录如果需要 persist, 还是要用到 cookie.
falcon05
2021-08-17 01:44:33 +08:00
本地 local storage 也存一个过期时间,请求前先判断是否到期,到期直接转到登录流程,可以少一次 API 请求,同时清除 local storage 的相关数据,比如 token 。

后端必然要做校验,jwt 本身就要检验过期时间,以防有人恶意提交或者意外提交过期的 token,单返回 401 可能不够,需要补充错误信息,有可能是请求相应资源的权限不够,比如要 VIP 才能取得访问,也可能是用户身份失效。两者处理的逻辑不一样。
zzl22100048
2021-08-17 08:40:37 +08:00
直接用 oidc 防止不必要的烦恼
xliao
2021-08-17 08:56:27 +08:00
前端:“和服务器交互时再判断是合理的”

后端:WTF ?
kekxv
2021-08-17 09:00:48 +08:00
cookie 有什么问题吗?
ChangJingli
2021-08-17 11:09:55 +08:00
前端把 token 存在 cookie 里,并设置与后端一致的 expire 时间即可。
XTTX
2021-08-17 12:49:17 +08:00
@xliao “前端:“和服务器交互时再判断是合理的”” 这话有啥问题?
Martin9
2021-08-17 17:46:57 +08:00
4L 说的对

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

https://www.v2ex.com/t/796053

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

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

© 2021 V2EX