1.引入依赖
<!-- JWT相关 -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
</dependency>
2.编写jwt工具类
public class JwtUtils {
public static final String SUBJECT = "xuefeng";
public static final long EXPIRE = 1000*60*60*24*7; //过期时间,毫秒,一周
//秘钥
public static final String APPSECRET = "xd666";
/**
* 生成jwt
* @param user
* @return
*/
public static String geneStudentToken(User user){
if(user == null || user.getId() == null || user.getName() == null
|| user.getHeadImg()==null){
return null;
}
String token = Jwts.builder().setSubject(SUBJECT)
.claim("id",user.getId())
.claim("name",user.getName())
.claim("img",user.getHeadImg())
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis()+EXPIRE))
.signWith(SignatureAlgorithm.HS256,APPSECRET).compact();
return token;
}
/**
* 校验token
* @param token
* @return
*/
public static Claims checkJWT(String token ){
try{
final Claims claims = Jwts.parser().setSigningKey(APPSECRET).
parseClaimsJws(token).getBody();
return claims;
}catch (Exception e){ }
return null;
}
}
3.编写拦截器(Intercepter)
public class LoginIntercepter implements HandlerInterceptor {
private static final Gson gson = new Gson();
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getHeader("token");
if(token == null ){
token = request.getParameter("token");
}
if(token != null ) {
Claims claims = JwtUtils.checkJWT(token);
if(claims !=null){
Integer userId = (Integer)claims.get("id");
String name = (String) claims.get("name");
request.setAttribute("user_id",userId);
request.setAttribute("name",name);
return true;
}
}
return false;
}
}
4.配置拦截器(config)
@Configuration
public class IntercepterConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginIntercepter()).addPathPatterns("/user/api/v1/*/**");
WebMvcConfigurer.super.addInterceptors(registry);
}
}
5.结语
由此我们的springboot简单实现jwt就实现了。
本文详细介绍如何在SpringBoot项目中使用JWT进行身份验证,包括引入依赖、编写工具类、实现拦截器及配置等步骤。
21万+

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



