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; } }