session 是什么?
session:服务端技术,意为会话控制;
和 cookie 不同,session 是保存在服务器上的,而且并不会随着 http 传递;因为 cookie 保存在客户端,
还是很不安全的,服务器为了杜绝这种事情,在服务器上也搞了一个存储用户信息的东西,这就是 session。
一般用于用户的登录状态,用户 id 等敏感信息的保存;
session 怎么使用?
以登录为例,当我们登录后,服务端会在 cookie 中设置当前用户的登录状态为已经登录,
同时在服务器上生成一份 session 文件,session 中存储用户 id,登录状态的有效期限等;这个 session 文件有
一个 id,生成 session 文件后,服务器还会把 session-id 写进 cookie。然后返回给客户端,此时用户的客户端
收到的 cookie 中包含登录状态和 session-id;等下一次再去请求时,http 协议会自动带着所有的 cookie
去请求;等服务器收到请求后,从 cookie 中把用户信息拿出来,然后再根据 session-id 把 session 读取出来,
再从 session 中查询登录状态,如果登录状态有效,就继续正常的响应,否则就返回登录失效的状态,要求用户登录;
session 和 cookie 的区别?
session 存在服务器上,是服务器的技术;
cookie 存在客户端,是 http 协议的一部分;
token 原理?
一般在用户登录时,客户端把用户的用户名和密码传递给服务器,服务端进行校验,如果没有问题,就会生成一个
token;token 是一个字符串,这个字符串一般是加密过的,一般包含了用户 id,登录的时间戳,以及 sign
(签名,生成 token 的前几位进行加密的结果,可以防止 token 被篡改,一旦篡改了后面这一段和前面的对不上了)
;生成 token 后,服务器把 token 返回给前端,然后前端下次请求的时候需要带上这个 token,然后服务端在接收
到请求后会首先校验这个 token 是否有效,如果有效继续受理请求,如果无效则直接拒绝;
使用 token 的方式有哪些?
1.服务端也可以直接把 token 写进 cookie 中,下次客户端发起请求时会自动带上;
2.服务端也可以作为数据返给前端,但是前端此时需要手动的保存这个 token,可以保存在 localStorage 中,下次发请求时从 ls 中取出作为参数传给服务器即可
3.服务端返回 token 后,客户端可以把这个 token 写进请求头中,然后服务端每次从请求头中获取;