一、传统模式
session做认证 就不过多介绍了
二、采用JWT
JSON WBEB TOKENS实现Token
概念 :将用户的信息做成一个加密字符串传递给客户端,客户端访问时服务器验证token 确认身份
前端部分 1:
$.ajaxSetup({ //设置全局ajax的属性,如果属性被重写会覆盖
cache: false,
beforeSend: function (XHR) {
XHR.setRequestHeader("Authorization", "Bearer " + Storage.getToken());// 这个就是 token,具体参数名可更改 Storage 是自定义的本地储存对象 (Local Storage)储存方式是 window.localStorage.setItem("Token", "123123");
},
//下面是后台对token认证不通过的处理 401是没有登陆 403是没有权限
statusCode: {
400: function (r) {
var errJson = r.responseJSON;
location.href = "/no_operation?msg=" + errJson.message;
}
, 401: function () {
var topWindow = AppHelper.getTopWindow();
var dir = layui.setter.base.replace("layuiadmin/",layui.setter.dir);
console.log(dir)
topWindow.location.href = dir + "sys/user/login.html";
}403: function () {
.
.
.
}
});
后端部分(怕以后忘记 先记录一下Token概念)
-
生成一个 Token 发放给用户
Token 包含3个部分:
·头部 储存两个信息 加密算法、声明类型(这里声明类型是 jwt)
·载荷 看心情
·签证 签名
不同部分之间使用 . 隔开,这是JAVA定义的东西 -
验证Token 直接写到 filter 就完事
如何使用:
生成token:
Jwts.builder()
.setSubject(subject)//设置主题 类似于key 自定义
.setClaims(claims)//设置所搭载的数据 类型Map
.setIssuedAt(new Date())//设置开始使用时间
.setExpiration(expireDate)//设置到期时间
.signWith(SignatureAlgorithm.HS256,SECRET_KEY)//设置加密类型和密钥
.compact() //return 的token字符串
解析token:
Jwt jwt=Jwts.parser()
.setSigningKey(SECRET_KEY)//密钥
.parse(token);//token字符串
//claims就是所搭载的数据
Map<String,Object> claims=(Map<String, Object>) jwt.getBody();
下面放点资料截图:
(写法很多 目前感觉就这个好) ↩︎