2023年11月25日发(作者:)
http⽆状态和解决认证的⽅法
http
http⽆状态,是指http协议对事务处理没有记忆功能。浏览器和服务器两次请求和响应,之没有任何关系。
好处:响应速度快。
坏处:由于每次请求没有关联,所以我们对⼀系列连续请求进⾏处理时就⽐较繁琐。
当然多次请求可以使⽤数据每次保存⽤户状态进⾏验证,但是每次都去访问数据库,对数据库造成压⼒。
浏览器会话
所谓的会话过程就是指从打开浏览器到关闭浏览器的过程。
为了解决HTTP⽆状态的缺点,cookie应⽤⽽⽣,cookie中保存⽤户的少量信息,每次请求时去验证cookie中的⽤户信息即可。这样就解决
了HTTP⽆状态的问题。
但是这样也会有⼀个问题,cookie⼤⼩是有限制的,且cookie是保存在浏览器的⽤户可以查看修改cookie中的⽤户信息,会造成⼀个数据不
安全的问题。
为了解决cookie⼤⼩和不安全的问题,session应⽤⽽⽣,session⼀半存在服务器,⼀半存在cookie中,当每次请求验证⽤户信息的时候,
就可以根据cookie中的sessionId到服务器进⾏获取验证⽤户信息。
这样就解决了HTTP协议的⽆状态和cookie的不安全问题。
浏览器关闭,会话失效是因为关闭浏览器的时候的时候存在浏览器进程中的cookie失效,导致sessionId丢失。
当我们再次打开浏览器的时候创建的是⼀个新的cookie会话,携带的是⼀个新的sessionId,开始的是⼀次新的浏览器服务器的⼀次会话。
会话虽然失效,但是服务器依然存放的前⼀次的,我们⼀般不做处理等待他⾃动失效。
session
cookie1.2
有两种:存放在浏览器进程中。存放在硬盘中。是可以选择被设置的。
单体服务解决服务器⽆状态和⽤户鉴权:
单体系统中不存在跨域和服务器共享问题。
cookiesession
使⽤浏览器会话和可以得到解决。
cookiesession
微服务解决服务器⽆状态和⽤户鉴权:
微服务要考虑跨域和服务器共享问题。
cookiesession
域名相同的情况下:
spring-session+redissessionsessionredis
:当⽤户登录的时候我们会存放到服务端和浏览器单,同时⼀部分信息也会被存放到,当我们拦
截认证时就可以去取进⾏验证判断。
redissession
redis+tokentokensessionIdkeytokenvalueredis
:当⽤户登录成功时⽣成,将或者⽤户信息做,做存放到,每次请求时拦截验证。
⽤户信息+token可以实现⼀个⽤户同时只能登录⼀次。
jwttokentokentokentokentoken
⽣成⽅式:当⽤户登录成功时⽣成,返回给⽤户,客户端每次请求时携带,然后服务端验证是否正确。
tokenCORS
必须要在每次请求时发送给服务器,它应该保存在请求头中,另外,服务器要⽀持(跨来源资源共享)策略,⼀般我们在服务
端这么做就可以了:。
Access-Control-Allow-Origin*
域名不相同的情况下:
redis+tokentokensessionIdkeytokenvalueredis
:当⽤户登录成功时⽣成,将或者⽤户信息做,做存放到,每次请求时拦截验证。
⽤户信息+token可以实现⼀个⽤户同时只能登录⼀次。
SSO单点登录:需要⼀个独⽴的注册中⼼,⽤户第⼀次登录被拦截到认证中⼼进⾏登录,认证中⼼给⽤户办法token,⽤户每次登录都携带
token,每次请求验证token是否正确。
*************** 当你发现⾃⼰的才华撑不起野⼼时,就请安静下来学习吧!***************
发布评论