会话跟踪——JWT令牌
会话指的是浏览器与服务器之间的一次连接,我们称之为一次会话。
在用户打开浏览器第一个访问服务器的时候,这个会话就建立了,只要有任何一方断开连接,此时会话就结束了。再一次会话中是可以包含多次请求和相应。 那什么是会话跟踪呢?
会话跟踪是一种维护浏览器状态的方法,服务器需要识别请求是否来自同一浏览器,一遍在同一次会话的多次请求间共享数据。而识别多次请求是否来自同一浏览器的过程,我们称之为会话跟踪。 什么是令牌技术?
令牌呢就是一个用户身份的表示,看似很高大上非常神秘,其实本质就是一个字符串。 通过令牌技术跟踪会话,我们就可以在浏览器发起请求。登录接口成功生成令牌,在响应数据的时候就直接将令牌响应给前段。 前段接受到令牌就需要存储起来 后续每次请求都要将令牌携带到服务端,来校验令牌的有效性。令牌有效证明已经执行了登录操作,令牌无效证明并未执行登录操作。 优点:
支持PC端、移动端 解决集群环境下的认证问题 减轻服务器的存储压力(无需再服务器端存储) 缺点:
JWT介绍(JSON Web Token)
就是一个简单的字符串,可以在请求参数或者是请求头当中直接传递。 自包含:JWT令牌,看似是一个随机的字符串,但是我们是可以根据自身的需求唉JWT令牌中存储自定义的数据类容。 JWT组成
Header(头),记录令牌类型、签名算法等 PayLoad(有效载荷),携带一些自定义信息,默认信息等 Signature(签名),防止Token被篡改,确保含安全性 介绍完这么多正题来啦,要想使用JWT令牌,首先引入JWT的依赖:
添加Jwt工具类
public class JwtUtils {
private static String signKey = "itheima";//签名密钥
private static Long expire = 43200000L; //有效时间
/**
* 生成JWT令牌
* @param claims JWT第二部分负载 payload 中存储的内容
* @return
*/
public static String generateJwt(Map<String, Object> claims){
String jwt = Jwts.builder()
.addClaims(claims)//自定义信息(有效载荷)
.signWith(SignatureAlgorithm.HS256, signKey)//签名算法(头部)
.setExpiration(new Date(System.currentTimeMillis() + expire))//过期时间
.compact();
return jwt;
}
/**
* 解析JWT令牌
* @param jwt JWT令牌
* @return JWT第二部分负载 payload 中存储的内容
*/
public static Claims parseJWT(String jwt){
Claims claims = Jwts.parser()
.setSigningKey(signKey)//指定签名密钥
.parseClaimsJws(jwt)//指定令牌Token
.getBody();
return claims;
}
}
引用完依赖后,调用工具类中提供的API来完成JWT令牌的生成和校验
@RestController
@Slf4j
public class LoginController {
//依赖业务层对象
@Autowired
private EmpService empService;
@PostMapping("/login")
public Result login(@RequestBody Emp emp) {
//调用业务层:登录功能
Emp loginEmp = empService.login(emp);
//判断:登录用户是否存在
if(loginEmp !=null ){
//自定义信息
Map<String , Object> claims = new HashMap<>();
claims.put("id", loginEmp.getId());
claims.put("username",loginEmp.getUsername());
claims.put("name",loginEmp.getName());
//使用JWT工具类,生成身份令牌
String token = JwtUtils.generateJwt(claims);
return Result.success(token);
}
return Result.error("用户名或密码错误");
}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/457826.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!