token登录验证机制与session登录验证机制的优缺点
原文地址
https://blog.csdn.net/weixin_42237752/article/details/88655511
1 token登录验证机制
前几天研究了一下springboot security的一个项目,分析了源码,里面就是在使用token的登录验证机制,主要使用过程如下图,登录后根据security的安全算法生成一个唯一的token值(基于JWT),然后存储到redis中,并设定过期时间,之后把token值返回前台,前台保存到localStorage中,然后每次访问的时候都需要提交token作为验证,验证通过则可以访问接口。
2 session登录验证机制
1、服务端session是用户第一次访问应用时,服务器就会创建的对象,代表用户的一次会话过程,可以用来存放数据。服务器为每一个session都分配一个唯一的sessionid,以保证每个用户都有一个不同的session对象。
2、服务器在创建完session后,会把sessionid通过cookie返回给用户所在的浏览器,这样当用户第二次及以后向服务器发送请求的时候,就会通过cookie把sessionid传给服务器,以便服务器能够根据sessionid找到与该用户对应的session对象。
3、session通常有失效时间的设定,比如2个小时。当失效时间到,服务器会销毁之前的session,并创建新的session返回给用户。但是只要用户在失效时间内发送了新的请求给服务器,服务器就会把它对应的session失效时间根据当前的请求时间再延长2个小时。
4、session在一开始并不具备会话管理的作用。它只有在用户登录认证成功之后,并且往session对象里面放入了用户登录成功的凭证,才能用来管理会话。管理会话的逻辑也很简单,只要拿到用户的session对象,看它里面有没有登录成功的凭证,就能判断这个用户是否已经登录。当用户主动退出的时候,会把它的session对象里的登录凭证清掉。所以在用户登录前或退出后或者session对象失效时,可定都是拿不到需要的登录凭证的。
3 两种登录验证的优缺点
貌似看这两种登录验证没有什么差别,但是其实差别很大,token的验证机制比session的验证机制更加灵活方便。
与session验证相比token的优点:
1、支持跨域访问:cookie是不允许跨域访问的,这一点对token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输。
2、无状态:token机制在服务端不需要存储session信息,因为token自身包含了所有登录用户的信息,只需要在客户端的cookie或本地介质存储状态信息。
3、更适用CDN:可以通过内容分发网络请求你服务端的所有资料(如:javascipt、HTML、图片等),而你的服务端只要提供API即可。
4、去耦:不要绑定到一个特定的身份验证方案。token可以在任何地方生成,只要在你的API被调用的时候,你可以进行token生成调用即可。
5、适用接口跨平台: 当你的客户端是一个原生平台(iOS, Android,Windows 8等)时,Cookie是不被支持的(你需要通过Cookie容器进行处理),这时采用Token认证机制就会简单得多。
- 1vue和el-table使用经验-如何刷新表格数据10882
- 2three.js加载3D瓦片和3dtiles数据生成交互式地图的开源项目9445
- 3Microsoft Visual C++ Redistributable是什么,有什么作用?7178
- 4mybatis使用经验——mybatis-spring-boot-starter和mybatis的版本对应关系表(持续更新~)5754
- 5uni-app使用经验—vue页面和html页面如何互相调用接口并传参5436
- 6Spring学习经验—@ResponseBody注解的使用说明4844
- 7Intellij IDEA下的版本控制VCS的启用与关闭4784
- 8Druid异常解决经验—java.sql.SQLException url not set4461
- 9如何用批处理命令(bat脚本)启动和停止windows服务4229
- 10nuxt.js项目中如何添加和使用全局变量4097
- 11解决SpringBoot使用maven下载不了jar包的问题3451
- 12linux中解压tar.gz文件报错“gzip: stdin: invalid compressed data--format violated”3342
- 13nuxtjs asyncData使用经验—如何发起多个axios请求并携带参数3205
- 14在Nuxt.js项目的head中引用外部js文件3042
- 15在NVIDIA控制面板设置参数时提示“拒绝访问 无法应用选定的设置到您的系统”的解决方法之一3018