目录
-
com.auth0 -
java-jwt -
3.4.0
- package com.buba.config;
-
- import com.auth0.jwt.JWT;
- import com.auth0.jwt.JWTCreator;
- import com.auth0.jwt.algorithms.Algorithm;
- import com.auth0.jwt.interfaces.DecodedJWT;
-
- import java.util.Calendar;
- import java.util.Date;
- import java.util.Map;
-
- public class JWTConfig {
- private static final String SIGN = "123456"; // 秘钥
-
- /**
- * 生成token
- * @param map
- * @return
- */
- public static String getToken (Map
map) { - Calendar instance = Calendar.getInstance();
- instance.add(Calendar.DATE,7); // 默认7天过期
- // 创建jwt builder
- JWTCreator.Builder builder = JWT.create();
- map.forEach((k,v)->{
- builder.withClaim(k,v);
- });
- String token = builder.withExpiresAt(instance.getTime())
- .sign(Algorithm.HMAC256(SIGN));
- return token;
- }
-
- /**
- * 验证token合法性
- * @param token
- */
- public static void verify(String token){
- JWT.require(Algorithm.HMAC256(SIGN)).build().verify(token);
- }
-
- /**
- * 获取token中的payload
- * @param token
- * @return
- */
- public static DecodedJWT getTokenInfo(String token){
- DecodedJWT verify = JWT.require(Algorithm.HMAC256(SIGN)).build().verify(token);
- return verify;
- }
-
- /**
- * 判断 token 是否过期
- */
- public boolean isTokenExpired(Date expiration){
- return expiration.before(new Date());
- }
- }
- package com.buba.config;
-
- import com.auth0.jwt.exceptions.AlgorithmMismatchException;
- import com.auth0.jwt.exceptions.SignatureVerificationException;
- import com.auth0.jwt.exceptions.TokenExpiredException;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import org.springframework.web.servlet.HandlerInterceptor;
-
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.util.HashMap;
-
- public class JWTInter implements HandlerInterceptor {
-
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- String token = request.getHeader("token");
- HashMap
map = new HashMap<>(); - try {
- JWTConfig.verify(token);
- return true;
- } catch (TokenExpiredException e) {
- map.put("state", false);
- map.put("msg", "Token已过期");
- } catch (SignatureVerificationException e){
- map.put("state", false);
- map.put("msg", "签名错误");
- } catch (AlgorithmMismatchException e){
- map.put("state", false);
- map.put("msg", "加密不匹配");
- } catch (Exception e) {
- e.printStackTrace();
- map.put("state", false);
- map.put("msg", "无效");
- }
- String json = new ObjectMapper().writeValueAsString(map);
- response.setContentType("application/json;charset=UTF-8");
- response.getWriter().println(json);
- return false;
- }
- }
- package com.buba.config;
-
- import org.springframework.context.annotation.Configuration;
- import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
- @Configuration
- public class InterConfig implements WebMvcConfigurer {
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- registry.addInterceptor(new JWTInterceptor()).
- excludePathPatterns("/User/UserId","/User/InsetUser") // 放行
- .addPathPatterns("/**"); // 拦截除了"/user/**的所有请求路径
- }
- }
- @GetMapping("/UserId")
- public Map
selUser(@RequestBody User user) { - Map
result = new HashMap<>(); - try {
- User userDB = userService.selUser(user);
- Map
map = new HashMap<>();//用来存放payload - map.put("id",userDB.getU_id().toString());
- map.put("username", userDB.getU_name());
- String token = JWTConfig.getToken(map);
- result.put("state",true);
- result.put("msg","登录成功");
- result.put("token",token); //成功返回token
- } catch (Exception e) {
- e.printStackTrace();
- result.put("state","false");
- result.put("msg",e.getMessage());
- }
- return result;
- }
User selUser(User user);
- @Transactional(propagation = Propagation.SUPPORTS)
- public User selUser(User user) {
- User userDB = userMapper.selUser(user);
- if(userDB!=null){
- return userDB;
- }
- throw new RuntimeException("登录失败");
- }
User selUser(User user);
- select * from user where u_name=#{u_name} and u_password = #{u_password} and sta_sid = 0
-