Token 认证登录
Token
转:什么是Token(令牌)-菜鸟笔记
关于Token 登录:Token登录认证
简单介绍
访问资源接口(API)时所需要的资源凭证
简单token 的组成: uid(用户唯一的身份标识) 、time (当前时间的时间戳) ,sign(签名,token的前几位以hash算法压缩成的一定长度的16进制字符串)
特点:
服务端无状态变化、可扩展性好
支持移动端设备
安全
支持跨域程序调用
token 的身份验证流程
- 1、客户端使用用户名和密码进行登录
- 2、服务端收到请求,去验证用户名与密码
- 3、验证成功后,服务端会签发一个token 并把这个token 发送给客户端
- 4、客户端收到token后,会把它存储起来,比如放在cookie 里 或者 localStorage里
- 5、客户端每次向服务端请求资源的时候需要带着服务端签发的token
- 6、服务端收到请求后,先验证客户端请求里带着的token ,如果验证成功,就向客户端返回请求的数据
- 优点:
- 每一次请求都需要携带token ,需要把token 放到HTTP的Header 里
- 基于token 的用户验证是一种服务端无状态的认证方式,服务端不用存放token数据,用解析token的计算时间换取 session的存储空间,从而减轻服务器的压力,减少频繁的查询数据库
- token 完全由应用管理,所以它可以避开同源策略
- Token生成示例
使用用户唯一ID + 系统时间 + 随机数 + 过期时间得到用户信息数据,对用户信息数据进行RSA非对称加密/AES对称加密得到一个加密字符串A,将加密字符串A再次进行签名等到一个签名数据。然后将签名数据和加密字符串进行拼接,最后使用base64进行编码,得到最终的token令牌。
/**** @param tokenBody 实例对象,通常为bean* @param minute 过期时间 单位:min* @param <T>* @return*/ public static <T> String createToken(T tokenBody, int minute) {long now = System.currentTimeMillis() / 1000;Gson gson = new Gson();JsonObject jsonBody = new JsonObject();jsonBody.addProperty("body", gson.toJson(tokenBody));String randomAlphabetic = RandomStringUtils.randomAlphabetic(3);JsonObject jsonHeader = new JsonObject();jsonHeader.addProperty("now", now);jsonHeader.addProperty("rand_num", randomAlphabetic);jsonHeader.addProperty("expire", (now + minute * 60));String token = null;try {byte[] encryptContent = generateEncryptBody(jsonHeader.toString(), jsonHeader.toString());byte[] signWithEncrypt = generateSignWithEncrypt(encryptContent);token = Joiner.on(".").join(new String[]{base64Encoder(jsonHeader.toString().getBytes("utf-8")),base64Encoder(encryptContent),base64Encoder(signWithEncrypt)});} catch (Exception e) {e.printStackTrace();}return token; }
常见的鉴权模式
- session-Cookie
- Token验证(JWT SSO单点登录)
- OAuth2.0 (开放授权)
JWT 与 Token 的区别
- 相同:
- 都是访问资源的令牌
- 都可以记录用户的信息
- 都是使服务端无状态变化
- 都是验证成功后,客户端才能访问服务端上受保护的资源
- 相同:
区别
- Token: 服务端验证客户端发送过来的Token 时,还需要查询数据库获取用户信息,然后验证Token 是否有效
- JWT: 将token 和 Payload 加密后存储于客户端,服务端只需要使用秘钥进行校验即可,不需要查询或者减少查询数据库,因为JWT自包含了用户信息和加密的数据
Token 认证登录相关推荐
- springboot+shiro+jwt实现token认证登录
准备: springboot 2.5.5 jdk 1.8 没有操作刷新token功能,也没有放redis做缓存 1.先贴代码 2.后讲一下验证逻辑 1.导入依赖 <!--shiro-->& ...
- vue接口token认证登录(加手机验证)
做一样东西就尽可能把他做好,因为人有[保存体力的天性],一旦成型,很不想花时间去改 ------从自己身上总结 需求:用户没有登录不能跳转任何页面,只能登录 实现思路:用户登录,后端验证,返回toke ...
- 【人人开源】集成通过Token认证统一登录功能
[人人开源]集成通过Token认证统一登录功能 后端 https://gitee.com/renrenio/renren-fast 前端 https://gitee.com/renrenio/renr ...
- Java实现Token登录验证(基于JWT的token认证实现)
文章目录 一.JWT是什么? 二.使用步骤 1.项目结构 2.相关依赖 3.数据库 4.相关代码 三.测试结果 一.JWT是什么? 在介绍JWT之前,我们先来回顾一下利用token进行用户身份验证的流 ...
- spring security 自定义认证登录
spring security 自定义认证登录 1.概要 1.1.简介 spring security是一种基于 Spring AOP 和 Servlet 过滤器的安全框架,以此来管理权限认证等. 1 ...
- 路由守卫 AJAX,vue路由导航守卫 和 请求拦截以及基于node的token认证
#####什么时候需要登录验证与权限控制 1.业务系统通常需要登录才能访问受限资源,在用户未登录情况下访问受限资源需要重定向到登录页面: 2.多个业务系统之间要实现单点登录,即在一个系统或应用已登录的 ...
- 常用的认证机制之session认证和token认证
一.session认证 1.session认证的过程: 前端输入用户名和密码进行登录操作,后端拿到用户名和密码后,会把md5进行加密,加密之后,拿上加密后的密文到用户表中查找密文是否一致,判断用户是否 ...
- drcom宽带认证登录超时_开发SSO单点登录需要注意的问题
一.单点登录系统开发需要注意的问题 1.单点登录系统需要支持jsonp请求? 单点登录系统主要是向其他系统提供用户身份验证服务,因此需要提供对外接口,而外部系统通过接口访问时,必然涉及跨域问题,因此需 ...
- Token 认证的来龙去脉,DRF认证,DRF权限,DRF限制
上一章节内容回顾:1.五个葫芦娃和三行代码 APIView(views.View)1.封装了Django的request- request.query_params --> 取URL中的参数- ...
最新文章
- 分布式锁能解决 mysql死锁吗_mysql死锁问题分析
- c 语言new运算符重载,c – 当我们重载new运算符时,是否需要重载放置new运算符?...
- 强化学习的数学基础3---Q-Learning
- delphi win64 DEBUG不能进预设断点的问题
- kafka搭建、学习(一)
- CSS-返回顶部代码
- 关于java中的httpsession_JavaWeb——HttpSession
- 【Python游戏】Python基于pygame和random模块开发的一个拼图小游戏 | 附带源码
- 大数据预测模型的深度学习导论
- 曲线运动与万有引力公式_【知识总结】物理必修二曲线运动与万有引力相关公式和规律...
- 企业单位申请代码签名证书方法
- u8云服务器系统管理,用友u8连云服务器
- 开放平台-百度开放平台:百度开放平台
- php判断caj文件页数,CAJ转Word有没有既免费还不限制页数的转换工具?
- 一、Synchronized详解与锁升级
- 自旋锁为什么不适用于单处理器系统
- Makefile3、书写规则(文件搜寻、伪目标、多目标、静态模式、自动生成依赖性)
- 海尔张瑞敏的十三个观点
- 2步开启Safari审查元素
- 让我搞得脑壳痛的is和==
热门文章
- matlab求正交向量组
- Kingfisher 5.13~ UIImageView、UIButton类扩展加载 网络图片
- 表的操作--创建表(简单)
- 8本最受欢迎的Python技术书,你看过几本?
- Ubuntu修改时区为UTC/CST时间
- 干货来了丨四大板块构建纵深防御体系,保障工业网络安全
- 网络重置后无法上网,以太网和无线网全部丢失,网络适配器出现“56”错误码
- 尼古拉·特斯拉(膜拜伟人)转自百度百科
- 我见过的最大的Flash游戏,最有意思的Puzzle类游戏
- 自动驾驶算法详解(3): LQR算法进行轨迹跟踪,lqr_speed_steering_control( )的python实现