拦截器开发

import com.example.online_class.utils.JsonData;
import com.example.online_class.utils.JwtUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.jsonwebtoken.Claims;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class LoginInterceptor implements HandlerInterceptor {

/**
* 进入controller之前
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
try {
String accessToken = request.getHeader("token");
if (accessToken == null){
accessToken = request.getParameter("token");
}

if (StringUtils.isNotBlank(accessToken)){
Claims claims = JwtUtils.checkJWT(accessToken);
if (claims == null){
sendJsonMessage(response, JsonData.buildError("登录过期,重新登录"));
return false;
}

Integer id = (Integer) claims.get("id");
String name = (String) claims.get("name");

request.setAttribute("user_id",id);
request.setAttribute("name",name);
return true;
}
}catch (Exception e){

}
sendJsonMessage(response, JsonData.buildError("登录失败,请重试"));
return false;
}

public static void sendJsonMessage(HttpServletResponse response,Object obj){
try {
ObjectMapper objectMapper = new ObjectMapper();
response.setContentType("application/json; charset=utf-8");
PrintWriter printWriter = response.getWriter();
printWriter.write(objectMapper.writeValueAsString(obj));
printWriter.close();
response.flushBuffer();
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
posted @ 2021-12-03 11:02  智慧搬运工  阅读(30)  评论(0)    收藏  举报