springboot生成token并在后续的相关操作使用token进行验证
第一步:导入依赖第二步:创建Creat类用于生成tokenpublic class CreatJwt {public static String getoken(Comsumer comsumer){Jwts.builder();//生成Jwts.parser();//解密JwtBuilder jwtBuilder=Jwts.builder().setId(comsumer.ge
·
第一步:导入依赖
第二步:创建Creat类用于生成token
public class CreatJwt {
public static String getoken(Comsumer comsumer){
Jwts.builder();//生成
Jwts.parser();//解密
JwtBuilder jwtBuilder=Jwts.builder()
.setId(comsumer.getId()+"")//设置需要加密的内容
.setSubject(comsumer.getUsername())
.setIssuedAt(new Date())//token保留时间
.signWith(SignatureAlgorithm.HS256,"my-123").setExpiration(
new Date(new Date().getTime()+86400000)
);
System.out.println(jwtBuilder.compact());
return jwtBuilder.compact();
}
}
第四步,在Controller层的应用,在登录的时候生成token,接口的话自己写,这里就不发了
@RequestMapping("/login")
public Object login(@RequestParam String username, @RequestParam String password, HttpServletResponse response){
JSONObject jsonObject=new JSONObject();
Comsumer comsumer = comsumerService.findname(username,password);
String token= CreatJwt.getoken(comsumer);//登录的使用调用CreatJwt生成
jsonObject.put("comsumer",comsumer);
jsonObject.put("token",token);
response.setHeader("token",token);//将token缓存到header
return jsonObject;
}
在Postmani调用接口成功生成token
第五步,解密,这里用根据用户ID和更新数据进行示例
@PutMapping("/test/{phone}")
public Object yyy(HttpServletRequest httpServletRequest,@PathVariable String phone){
JSONObject jsonObject=new JSONObject();
//获取token
String token = httpServletRequest.getHeader("token");
//调用解密方法
Claims claims= Jwts.parser()
.setSigningKey("my-123")
.parseClaimsJws(token)
.getBody();
//解密ID
Integer id=Integer.valueOf(claims.getId());
//解密用户名
String username=claims.getSubject();
Comsumer comsumer=new Comsumer();
comsumer.setId(id);
comsumer.setPhone(phone);
//判断解密的结果
if(username!=null&&claims.getId()!=null&&username.equals(username))
{
comsumerService.updateById(comsumer);
jsonObject.put("code",200);
return jsonObject;
}else
{
return "500";
}
}
用第四步获得的token去调用test接口
修改成功,返回200;
如果不使用token,解密失败,返回500
更多推荐
已为社区贡献2条内容
所有评论(0)