简介:全称:JSON Web Token (https://jwt.io/) 定义了一种简洁的、自包含的格式。
用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是 可靠的。
导入依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
写JWT工具类
public class JwtUtils {
public static String generateJwt(Map<String,Object> claims){
return Jwts.builder()
.setClaims(claims) //自定义内容
.signWith(SignatureAlgorithm.HS256, "laohuang")//签名算法
.setExpiration(new Date(System.currentTimeMillis() + 12 * 3600)) //有效期
.compact();
}
}
调用JWT工具类的使用
@PostMapping("/login")
public Result login(@RequestBody Emp emp){
Emp e = empService.login(emp);
if (e!=null){
Map<String,Object> claims = new HashMap<>();
claims.put("id",emp.getId());
claims.put("username",emp.getUsername());
claims.put("password",emp.getPassword());
//生成JWT令牌
String jwt = JwtUtils.generateJwt(claims);
return Result.success(jwt);
}
return Result.error("用户名或密码错误");
}
Service层和Mapper层
@Override
public Emp login(Emp emp) {
return empMapper.login(emp);
}
@Select("select * from emp where username = #{username} and password = #{password}")
Emp login(Emp emp);