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是否正确。

*************** 当你发现⾃⼰的才华撑不起野⼼时,就请安静下来学习吧!***************