1.12. token工具

12.token工具

1.认识token(令牌)

token字符串:
	eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJKb2UifQ.1KP0SsvENi7Uz1oQc07aXTL7kpQG5jBNIybqr60AlD4
header.body.对body按照header中指定的算法进行加密后的加密字符串
header:指定加密算法,比如HS256;
body:自定义的声明信息;(唯一的用户名或者手机号或者用户id,签发的时间,过期时间,签发机构。)
签名:对body按照指定的hs256算法+指定的密钥得到了加密后的信息。

2.jjwt组件生成token令牌字符串

1.添加依赖包jjwt-api;jjwt-impl;jjwt-jackson;jackson的3个jar包
2.使用对称算法HS256生成密钥:
	Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
3.指定body里的信息生成token字符串:
	 String jws = Jwts.builder().setClaims(Map).setIssuedAt(Date).setExpiration(Date).signWith(key).compact();
4.反向解析token字符串:
Jws<Claims> jws = Jwts.parserBuilder()
                .setSigningKey(密钥).build().parseClaimsJws(token字符串);     

3.token的使用

  • 通过密保邮箱找回密码:

用户输入邮箱账号,点击找回密码,在服务端接口中根据邮箱账号去查找用户信息,找不到用户信息,则提示邮箱未注册;如果找到用户信息(uid:1,uname:’fyt‘,uphone:‘123123‘),生成一个30分钟有效的token字符串,token中的声明信息包含用户手机号, 向邮箱中发送一个url链接(http://域名/resetpwd?token=生成的token字符串),当进入resetpwd接口时,要判断token合法性(30分钟内,有手机号,检查黑名单),

  • 使用token来保存用户登录状态信息:

用户登录–>登录成功后由服务器生成1周有效的token字符串,token中含有用户名信息。把token发送至客户端(浏览器,android)–>客户端把token保存本地浏览器(localstorage)–>以后所有请求都带token发送服务端–>服务端解析token合法性–>服务端还要检测token剩余有效时间,去刷新生成新的token

0.在CorsFilter过滤器中配置exposedHeaders=“token” 
	<property name="exposedHeaders" value="token"></property><!--暴露的响应头-->
1.登录成功后,生成token,放在响应头返回客户端

token的隐患:

一旦服务器签发token,在有效期内如果token泄露,就可以使用tonken伪装登录系统。即使注销登录仍然有问题。注销后服务端维护token黑名单列表。

其它:

对称加密(加密密钥与解密密钥相同):明文信息+加密密钥+加密算法=密文信息 密文信息+解密密钥+解密算法=明文信息

非对称加密(加密密钥与解密密钥不同):明文信息+加密密钥+加密算法=密文信息 密文信息+解密密钥+解密算法=明文信息 (https协议中采用非对称加密)

http:用户请求–服务端接收数据-逻辑处理-服务器返回数据–用户接收

https:需要在tomcat下部署ssl证书(非对称的公钥),浏览器先去服务器拿去ssl证书到本地,安装浏览器。

​ 发起请求,把请求数据按照公钥进行加密,服务端收数据,按照私钥进行解密;逻辑处理返回数据;返回数据按照私钥加密,发送客户端,客户端浏览器拿公钥解密。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值