概要
会话技术
黑马java-web day12
cookie
session
令牌技术
令牌工具类
@Component
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)
.getBody();
return claims;
}
}
登录校验
@Slf4j
@RestController
public class LoginController {
@Autowired
private EmpService empService;
@PostMapping("/login")
public Result login(@RequestBody Emp emp){
log.info("会员登陆"+emp);
Emp e=empService.login(emp);
if(e != null){
Map<String , Object> claim=new HashMap<>();
claim.put("id",e.getId());
claim.put("name",e.getName());
claim.put("Username",e.getUsername());
String jwt= JwtUtils.generateJwt(claim);
return Result.success(jwt);
}
return Result.error("用户名或密码错误");
}
}