
1 tabris17 2020-12-21 14:22:48 +08:00 都一样,cookie 本质上也就是 HTTP 请求的一个头部而已 |
2 3dwelcome 2020-12-21 14:27:04 +08:00 传统的 Cookie 挺好用的,然而我另辟蹊径,用的是 localStorage 存用户的 session 。 是为了兼容一些特殊的场景,我代码里面很多服务器推送,WSS 之类的,没发 HTTP 请求,也就没实时更新 cookie. |
3 u6pM63mMZ34z32cE 2020-12-21 15:23:54 +08:00 token |
4 ben1024 2020-12-21 15:27:30 +08:00 有中间层就 cookie + csrf 没有就 token |
5 hanxiV2EX 2020-12-21 15:28:34 +08:00 via Android 同时上 |
6 MIUIOS 2020-12-21 1538:03 +08:00 看你后端喽 |
7 sunderls 2020-12-21 15:42:13 +08:00 via iPhone Cookie 是 client 存储技术 token 是数据签名 二者不存在二选一的问题 你想问的估计是用 token 还是用 db 维持 session 这个取决于服务器端的设计 考虑到多台服务器的共享问题。token 的扩展性更好 至于 client 的存储 因为 cookie 有 httpOnly 选项 比其他 localstorage 之类的更好 所以一般情况下。建议 cookie ( httponly ) + token |
8 VensonEEE 2020-12-21 15:51:36 +08:00 这和 vue 、react 没有关系。 复杂的系统,分布式的系统,token 是首选。拓展性强。 简单的系统,基于 session 的认证,cookie 是首选。简单易维护。 |
9 securityCoding 2020-12-21 15:55:49 +08:00 写来写去最后都会变成 token , 存哪里不重要最终都要被服务端获取并解析 |
10 duduaba 2020-12-21 16:10:59 +08:00 具体问题具体分析啊。如果只是自有业务那 cookie 、token 都可以,如果是对接第三方,比如要 iframe 嵌入到其他系统,在二级域名保证不了同一源的情况下只能用 token 这种方式。所以如果考虑更好的扩展性,建议用 token 。 |
11 CoderGeek 2020-12-21 16:19:01 +08:00 token |
12 chendy 2020-12-21 16:25:12 +08:00 用 cookie 其实也是把 token 存在 cookie 里 项目简单的话这种方式也够用了 |
13 ysicing 2020-12-21 16:28:28 +08:00 看场景咯,我们是有 cookie 先用 cookie,没有在查 token |
14 rodrick 2020-12-21 16:30:33 +08:00 应该是想要问 token 存 cookie 还是存 webStorage ?还是问直接用 cookie 存鉴权信息? |
15 Sapp 2020-12-21 16:32:28 +08:00 这对前端不是一回事吗?你用 cookie 还不是等于把 token 存进去?你用 token 你自己存进 localStorage 里不也是 cookie 的效果?只是要手动添加进 headers 里,cookie 他会自己带进去而已 |
16 shanghai1943 2020-12-21 16:33:08 +08:00 @3dwelcome #2 老哥请教一个 websocket 负载均衡的问题。之前用 ws+nginx+java 的 spring 架构,在 NGINX 端采用了 ip_hash 的方式来做负载均衡,弊端是每个 ws 连接只能固定请求到某个后端服务,如果该服务重启了就可能导致 ws 的连接全都失效了,相当于重新指向别的后端服务了。想请教下你们是如何处理 ws 的负载均衡问题的?感谢。 |
17 3dwelcome 2020-12-21 16:46:09 +08:00 @shanghai1943 我们的服务器都是热加载更新的,只要机房不掉电,用户 ws 就不会断线,完全不存在你说的这种情况。 |
18 shanghai1943 2020-12-21 16:48:51 +08:00 @3dwelcome #17 方便透露你们的服务器是用的什么架构技术么?感谢。 |
19 3dwelcome 2020-12-21 17:07:00 +08:00 @shanghai1943 我们的 ws 模块是插件化接入到 web 服务器,所以热加载比较容易。 你们 nginx 热加载应该也是可以的,可能后端没吃透这块。 为了用户体验考虑,强行踢下线感觉肯定不好。如果后端实在太菜,你们前端可以加个状态恢复功能,在无感知情况下让用户重连。(正常 websocket 断开和踢用户下线走两个不同的初始化路由) |
20 shanghai1943 2020-12-21 17:14:36 +08:00 @3dwelcome #19 我们这边用的是 NGINX 做了请求的负载均衡,你们那边是用什么来做负载均衡的? |
21 3dwelcome 2020-12-21 17:19:09 +08:00 @shanghai1943 我们用户数还没到负载那部分。。可能给不了什么有效建议,一台服务器正常也能撑个几万连接数了。 我可能没看仔细你的问题,热加载对于跨不同服务器,好像是没什么特别的帮助,socket 都断开了。 这种案例,以前网游服务器集群挺多的,可以考虑参考一下。 |
22 shanghai1943 2020-12-21 17:22:52 +08:00 @3dwelcome #21 好的。感谢。 |
23 karnaugh 2020-12-21 17:24:06 +08:00 如果跨域名的话,就只能 cookie 咯 |
24 bianz103 2020-12-21 18:11:45 +08:00 via iPhone 可以 cookie 和 token 都支持下。小程序没有 cookie |
25 KuroNekoFan 2020-12-21 18:38:24 +08:00 via iPhone 我觉得当代 web 开发能避免 cookie 就避免 cookie |
26 KuroNekoFan 2020-12-21 18:39:22 +08:00 via iPhone 不过你这问题问的不明确,token 也可以以 cookie 的形式存在啊 |
27 darknoll 2020-12-21 18:52:56 +08:00 cookie 方便呗,但是没法跨域 |
28 amundsen 2020-12-21 18:53:51 +08:00 jwt 的设计就行了。 |
29 crclz 2020-12-21 19:51:05 +08:00 后端支持 2 种呗,既满足了习惯于用 token 的,又满足传统的 |
30 xuanbg 2020-12-21 20:13:01 +08:00 cookie 只是浏览器存储数据的一种方式,和 token 不是一回事啊。和 token 对标的是 session 。session 和 token 本质上没啥差别,只不过 token 可以承载更多的信息,使用上更加灵活。 |
31 learningman 2020-12-21 20:15:28 +08:00 @3dwelcome 那更推荐 sessionStorage,和 cookie 的 httponly 差不多 |
32 chairuosen 2020-12-21 21:33:48 +08:00 token 。 想深一点,根本区别是后端控制流程,还是前端控制的问题。 前后不分离时期是后端控制,前后分离是前端控制。 |
33 weixiangzhe 2020-12-21 22:24:48 +08:00 后端只有 jwt 和 session,前台存的 sessionid 或者 token 个人认为能用 httponly 的 cookie 直接用 cookie 就好,不行就会 sessionStorage 吧 |