关于session、cookie、token登录状态判断

session 是后端的概念,session 本质目的就是后端需要区分出每次请求是哪个用户产生的。用 token 的情况下,就是找到这个 token 对应的用户,用 cookie 就是找到这个 cookie 对应的用户,token 、cookie 本质都是一串字符串,一般做法是后端在 redis 里存每个 token\session 对应的 user_id

前后端分离的情况下,token 一般是前端存在 localstorage 中 ,在进行 xhr 请求时放在 herder 的一个字段里面,一般是 authorization 字段

非分离的情况下一般用 cookie,这时也基本上没有 xhr 类型的请求,也没有跨域请求,所以 cookie 会随着 get 或者 post 一同提交到后端

跨域请求 /xhr 类型请求也可以设置 cookie 并且可以自动带上 cookie,具体内容要查一下文档,忘记了。

 

1.cookie 呢,就是返回头有个 set-cookie,让浏览器保存 cookie,cookie 是保存在浏览器
2.session 呢是浏览器和服务端都保存,服务端给一个 sessionid 存 cookie,下次请求带上这个 cookie,服务端拿着 sessionid 去数据库或者缓存区查,这种 session 方案是依赖于 cookie
3.token 就是存在浏览器的 localstorage,下次请求带上这个 token,服务端再去存储中找 token 确定用户
4.还有一种 token,叫 jwt,和 cookie 很像,也是存浏览器,比如 localstorage,但是存浏览器的话,服务端就没办法把他 revoke 掉,也就取消,没办法退出登录
此外还有 sessionstorage,VUE 还有个 vuex 状态存储
然依赖 cookie 的 session 方案不好解决跨域的问题,比如你的 cookie 是设置在这个域下面的,那请求另外一个域,不会带上这个 cookie,或者你要用 js 去操作这个域(开始胡说八道),那你的 cookie 就不能是 http only
然后 sessionstorage 我还不会,你去百度一下,然后告诉我,阿里嘎多

 

原文地址:https://www.v2ex.com/t/668743

 

你可能感兴趣的:(关于session、cookie、token登录状态判断)