认证

1.http请求头有什么:


屏幕快照 2019-08-18 下午11.22.51.png

session在cookie里面

2.上图可以看出登录成功有x-uni-crsf-token和bspsession两个字段?


[图片上传中...(屏幕快照 2019-08-18 下午11.32.45.png-4177a2-1566142438898-0)]

屏幕快照 2019-08-18 下午11.32.45.png

crsf:攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求。 CRSF能做的事情包括利用你的身份发邮件、发短信、进行交易转账等,甚至盗取你的账号。
https://www.jianshu.com/p/67408d73c66d
上面链接讲述了什么是跨站请求伪造和如何应对?
1.httponly只读,通过脚本无法获取cookie信息
2.服务器端生成随机数进行校验且随机数不放在cookie中
Session的过期时间存在cookie的Max-age字段,Token的过期时间存在服务器 。
https://blog.csdn.net/yunnysunny/article/details/26935637
session的作用如下:
服务器拿到sessionid查询根据这个PHPSESSID查询服务器上有没有对应的session内容,如果有则将其对应的值取出来进行反序列序列化(也就是将其转成编程语言中的一个数据结果,比如在php中会得到一个$_SESSION数组,在j2ee中会得到类型为javax.servlet.http.HttpSession),方便在程序中进行读取,最终服务器认定session中储存的值存在,并且从反序列化得到的对象中读取到了用户ID属性,然后就往cms数据库的文章表中插入了一条数据,最终返回http响应,告诉浏览器操作成功了。
======================
session的过期时间
默认30分钟(期间没有活动),cookie的过期时间关闭浏览器就会消失。
https://www.cnblogs.com/yaowen/p/4819018.html

如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。
  如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。
===
再次注意关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。

cookie一般分两种。1.不设置过期时间,会存在内存里,浏览器关闭即失效。2.设置过期时间,会存在硬盘里,一直到过期时间才失效。

用户发出登录请求,带着用户名和密码到服务器经行验证,服务器验证成功就在后台生成一个token返回给客户端
客户端将token存储到cookie中,服务端将token存储到redis中,可以设置存储token的有效期。
后续客户端的每次请求资源都必须携带token,这里放在请求头中,服务端接收到请求首先校验是否携带token,以及token是否和redis中的匹配,若不存在或不匹配直接拦截返回错误信息(如未认证)。

token管理:生成、校验、解析、删除
token:这里使用userId_UUID的形式
有效期:使用Redis key有效期设置(每次操作完了都会更新延长有效时间)
销毁token:删除Redis中key为userId的内容
token存储:客户端(Cookie)、服务端(Redis)
Cookie的存取操作(jquery.cookie插件)
Redis存取(StringRedisTemplate)

你可能感兴趣的:(认证)