session认证:
HTTP协议是一种无状态协议,用户每访问一次应用,就需要重新进行一次认证,这显示很不方便。为了让后台应用能识别出是哪个用户发出的请求,就有了传统的session认证:
在后台服务器存储一份用户登陆信息,这份信息也会在响应前端请求时返回给浏览器(前端),前端将其保存为cookie,下次请求时前端发送给后端应用,后端应用就可以识别这个请求是来自哪个用户了。
session认证过程:
-
浏览器第一次访问服务器
-
服务器生成一个session,为该session生成一个唯一的会话key,也就是sessionId
-
服务器将sessionid及对应的session分别作为key和value保存到缓存中,也可以持久化到数据库中
-
服务器再把sessionid,以cookie的形式发送给客户端(即浏览器)
-
浏览器下次再访问时,会直接带着cookie中的sessionid
-
服务器根据sessionid找到对应的session进行匹配,匹配成功,则不用进行验证
缺点:
session一般保存在服务器的内存中,占用内存空间;
用户认证之后,服务端做认证记录,如果认证的记录被保存在内存的话,这意味着用户下次请求还必须要请求在这台服务器上,这样才能拿到授权的资源,这样在分布式的应用上,响应的限制了负载均衡器的能力ÿ