JWT令牌
- 引入依赖
<!-- JWT依赖--> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency>在引入完JWT来赖后,就可以调用工具包中提供的API来完成JWT令牌的生成和校验。工具类:Jwts
引入JWT工具类:在项目工程下创建
com.itheima.util包,并把提供JWT工具类复制到该包下package com.itheima.util; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import java.util.Date; import java.util.Map; public class JwtUtils { private static String signKey = "SVRIRUlNQQ=="; private static Long expire = 43200000L; /** * 生成JWT令牌 * @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) .getBody(); return claims; } }完善
EmpServiceImpl中的login方法逻辑, 登录成功,生成JWT令牌并返回@Override public LoginInfo login(Emp emp) { Emp empLogin = empMapper.getUsernameAndPassword(emp); if(empLogin != null){ //1. 生成JWT令牌 Map<String,Object> dataMap = new HashMap<>(); dataMap.put("id", empLogin.getId()); dataMap.put("username", empLogin.getUsername()); String jwt = JwtUtils.generateJwt(dataMap); LoginInfo loginInfo = new LoginInfo(empLogin.getId(), empLogin.getUsername(), empLogin.getName(), jwt); return loginInfo; } return null; }
2万+

被折叠的 条评论
为什么被折叠?



