Cookie、session、token都是为了解决http无状态得这个缺点而出现的,都是服务端返回的,用来鉴权的。cookie是保存在客户端的,不安全。有被非法用户截取的风险。
cookie是保存在浏览器的缓存中的,过期时间是服务器端来确定的,只要浏览器关了,就会失效。也可以本地持久化保存。 比如客户端发一个请求给服务器端,服务器端会在响应头的setcookie字段中返回cookie,个数由编程人员确定,没有限制,包括cookie的名字,value,域,路径,过期时间。
而session呢,是保存在服务器端的,通过cookie来传递的。比如客户端发请求过来,服务器端会把sessionid放在setcookie中,返回给客户端,客户端进行登录请求时,就会带着这个值,服务器拿到以后,这里先说下,服务器端对session保存的方式有两种,一种是存在一个文件中,一种是放在数据库中。服务器拿到客户端发来的sessionid到自己本地去找对应的sessionid,然后验证该sessionid关键的用户是不是这个请求的客户端,是的话,就给响应。 但是这样会有一个问题,如果有几亿用户同时发请求,那么服务器需要保存几亿用户的sessionid,所以对服务器的性能造成了严重的压力。
Token的出现可以解决微服务部署的跨域访问问题。 用户登录请求到一个专门的认证服务上进行认证,认证成功以后,返回通过加密后的token,客户端拿到之后,保存,下次还是这个用户访问的时候,就会带着这个token进行请求,被请求得服务拿着这个token去认证中心看下是不是该用户的,是,那么就给通过,返回响应结果。
Token的有效时间: ①15分钟以内 ②一般15天
|