package com.sincere.student.access; import com.alibaba.fastjson.JSON; import com.sincere.student.dto.BaseDto; import com.sincere.student.utils.ResultException; import com.sincere.student.utils.TokenUtils; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.lang.annotation.Annotation; import java.lang.reflect.Method; public class MemberInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (handler instanceof HandlerMethod) { HandlerMethod myHandlerMethod = (HandlerMethod) handler; Method method = myHandlerMethod.getMethod(); Annotation methodAnnotation = method.getAnnotation(MemberAccess.class);//方法上有该标记 if (methodAnnotation != null) { boolean isLogin = isLogin(request); if (isLogin) { return true; } else {//未登录 //Ajax请求返回JSON BaseDto repVo = new BaseDto(); repVo.setSuccess(false); repVo.setMessage("请先登录"); String data = JSON.toJSONString(repVo); response.setHeader("content-type", "text/html;charset=UTF-8"); OutputStream out = response.getOutputStream(); out.write(data.getBytes("UTF-8")); return false; } } } return true; } private boolean isLogin(HttpServletRequest request) throws Exception { try { String token = request.getHeader("X-Authorization"); if (token != null) { try { TokenUtils.validToken(token); return true; } catch (ResultException e) { } } } catch (Exception e) { return false; } return false; } }