Session与Token认证机制 前后端分离下如何登录 #yyds干货盘点#
Posted 梁云亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Session与Token认证机制 前后端分离下如何登录 #yyds干货盘点#相关的知识,希望对你有一定的参考价值。
HTTP是无状态的,一次请求结束,连接断开,下次服务器再收到请求,服务器端就不知道这个请求是哪个用户发过来的。当然服务器端知道是哪个客户端地址发过来的,但是对于我们的应用来说,我们是靠用户来管理,而不是靠客户端。
所以对我们的应用而言,HTTP是需要有状态管理的,以便服务端能够准确的知道http请求是哪个用户发起的,从而判断该用户是否有权限继续这个请求。这个过程就是常说的会话管理。
登录的基本流程:
基于Session登录
服务器端使用Session技术,浏览器端使用Cookie技术。
- 如果前端和后台服务部署在同域下,则登录方式相对简单。
说明:- 服务端session是用户第一次访问应用时,服务器就会创建的对象,代表用户的一次会话过程,可以用来存放数据。服务器为每一个session都分配一个唯一的sessionid,以保证每个用户都有一个不同的session对象。
- 服务器在创建完session后,会把sessionid通过cookie返回给用户所在的浏览器,这样当用户第二次及以后向服务器发送请求的时候,就会通过cookie把sessionid传回给服务器,以便服务器能够根据sessionid找到与该用户对应的session对象。
- session通常有失效时间的设定,比如2个小时。当失效时间到,服务器会销毁之前的session,并创建新的session返回给用户。但是只要用户在失效时间内,有发送新的请求给服务器,通常服务器都会把他对应的session的失效时间根据当前的请求时间再延长2个小时。
- session在一开始并不具备会话管理的作用。它只有在用户登录认证成功,并且往sesssion对象里面放入了用户登录成功的凭证之后,才能用来管理会话。管理会话的逻辑也很简单,只要拿到用户的session对象,看它里面有没有登录成功的凭证,就能判断这个用户是否已经登录。当用户主动退出的时候,会把他的session对象里的登录凭证清掉。所以在用户登录前或退出后或者session对象失效时,肯定都是拿不到需要的登录凭证的。
基于Token登录
说明:
- 用户在浏览器中输入用户和密码,后台服务器通过加密或者其他逻辑,生成一个Token。
- 前端获取到Token,存储到cookie或者localStorage中,在接下来的请求中,将token通过url参数或者HTTP Header头部传入到服务器
- 服务器获取token值,通过查找数据库判断当前token是否有效
Cookie的传输
cookie 是浏览器储存在用户电脑上的一小段文本文件。cookie 是纯文本格式,不包含任何可执行的代码。cookie 只包含数据,就其本身而言是无害的。
通过Cookie, Web 页面或服务器就可以告知浏览器按照一定规范来储存某些信息,并在随后的请求中将这些信息发送至服务器,Web 服务器就可以使用这些信息来识别不同的用户。
大多数需要登录的网站在用户验证成功之后都会设置一个 cookie,只要这个 cookie 存在,用户就可以自由浏览这个网站的任意页面。
以上是关于Session与Token认证机制 前后端分离下如何登录 #yyds干货盘点#的主要内容,如果未能解决你的问题,请参考以下文章
前后端分离项目 — 基于SpringSecurity OAuth2.0用户认证