前后端分离,用 React/Vue 框架下,用户权限应该用 cookie 验证?还是 token 验证?

2020-12-21 14:20:21 +08:00
 liudaqi
前后端分离的框架,用户权限大家用 cookie 验证?还是 token 验证?
4986 次点击
所在节点    JavaScript
33 条回复
tabris17
2020-12-21 14:22:48 +08:00
都一样,cookie 本质上也就是 HTTP 请求的一个头部而已
3dwelcome
2020-12-21 14:27:04 +08:00
传统的 Cookie 挺好用的,然而我另辟蹊径,用的是 localStorage 存用户的 session 。
是为了兼容一些特殊的场景,我代码里面很多服务器推送,WSS 之类的,没发 HTTP 请求,也就没实时更新 cookie.
mebtte
2020-12-21 15:23:54 +08:00
token
ben1024
2020-12-21 15:27:30 +08:00
有中间层就 cookie + csrf
没有就 token
hanxiV2EX
2020-12-21 15:28:34 +08:00
同时上
totoro52
2020-12-21 15:38:03 +08:00
看你后端喽
sunderls
2020-12-21 15:42:13 +08:00
Cookie 是 client 存储技术
token 是数据签名
二者不存在二选一的问题

你想问的估计是用 token 还是用 db 维持 session

这个取决于服务器端的设计

考虑到多台服务器的共享问题。token 的扩展性更好


至于 client 的存储 因为 cookie 有 httpOnly 选项 比其他 localstorage 之类的更好

所以一般情况下。建议 cookie ( httponly ) + token
VensonEEE
2020-12-21 15:51:36 +08:00
这和 vue 、react 没有关系。
复杂的系统,分布式的系统,token 是首选。拓展性强。
简单的系统,基于 session 的认证,cookie 是首选。简单易维护。
securityCoding
2020-12-21 15:55:49 +08:00
写来写去最后都会变成 token , 存哪里不重要最终都要被服务端获取并解析
duduaba
2020-12-21 16:10:59 +08:00
具体问题具体分析啊。如果只是自有业务那 cookie 、token 都可以,如果是对接第三方,比如要 iframe 嵌入到其他系统,在二级域名保证不了同一源的情况下只能用 token 这种方式。所以如果考虑更好的扩展性,建议用 token 。
CoderGeek
2020-12-21 16:19:01 +08:00
token
chendy
2020-12-21 16:25:12 +08:00
用 cookie 其实也是把 token 存在 cookie 里
项目简单的话这种方式也够用了
ysicing
2020-12-21 16:28:28 +08:00
看场景咯,我们是有 cookie 先用 cookie,没有在查 token 🌹🐔
rodrick
2020-12-21 16:30:33 +08:00
应该是想要问 token 存 cookie 还是存 webStorage ?还是问直接用 cookie 存鉴权信息?
Sapp
2020-12-21 16:32:28 +08:00
这对前端不是一回事吗?你用 cookie 还不是等于把 token 存进去?你用 token 你自己存进 localStorage 里不也是 cookie 的效果?只是要手动添加进 headers 里,cookie 他会自己带进去而已
shanghai1943
2020-12-21 16:33:08 +08:00
@3dwelcome #2 老哥请教一个 websocket 负载均衡的问题。之前用 ws+nginx+java 的 spring 架构,在 NGINX 端采用了 ip_hash 的方式来做负载均衡,弊端是每个 ws 连接只能固定请求到某个后端服务,如果该服务重启了就可能导致 ws 的连接全都失效了,相当于重新指向别的后端服务了。想请教下你们是如何处理 ws 的负载均衡问题的?感谢。
3dwelcome
2020-12-21 16:46:09 +08:00
@shanghai1943 我们的服务器都是热加载更新的,只要机房不掉电,用户 ws 就不会断线,完全不存在你说的这种情况。
shanghai1943
2020-12-21 16:48:51 +08:00
@3dwelcome #17 方便透露你们的服务器是用的什么架构技术么?感谢。
3dwelcome
2020-12-21 17:07:00 +08:00
@shanghai1943 我们的 ws 模块是插件化接入到 web 服务器,所以热加载比较容易。
你们 nginx 热加载应该也是可以的,可能后端没吃透这块。
为了用户体验考虑,强行踢下线感觉肯定不好。如果后端实在太菜,你们前端可以加个状态恢复功能,在无感知情况下让用户重连。(正常 websocket 断开和踢用户下线走两个不同的初始化路由)
shanghai1943
2020-12-21 17:14:36 +08:00
@3dwelcome #19 我们这边用的是 NGINX 做了请求的负载均衡,你们那边是用什么来做负载均衡的?

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

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

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

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

© 2021 V2EX