实体类转 json 数据所用到的依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.29</version>
</dependency>
结果实体类
package com.cmy.interceptortest.entity;
public class Result {
private Integer response_code;
private String response_message;
private String result;
public Result() {
}
public Result(Integer response_code, String response_message, String result) {
this.response_code = response_code;
this.response_message = response_message;
this.result = result;
}
public Integer getResponse_code() {
return response_code;
}
public void setResponse_code(Integer response_code) {
this.response_code = response_code;
}
public String getResponse_message() {
return response_message;
}
public void setResponse_message(String response_message) {
this.response_message = response_message;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
}
创建 token 拦截器
package com.cmy.interceptortest.interceptor;
import com.alibaba.fastjson.JSON;
import com.cmy.interceptortest.entity.Result;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@Component
public class AccessTokenInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
String accessToken = httpServletRequest.getHeader("AccessToken");
if (StringUtils.hasLength(accessToken)) {
if(!"abc".equals(accessToken)) {
return extracted(httpServletResponse);
}
return true;
}
return extracted(httpServletResponse);
}
private boolean extracted(HttpServletResponse httpServletResponse) throws IOException {
PrintWriter out = null ;
try {
httpServletResponse.setStatus(401);
httpServletResponse.setCharacterEncoding("UTF-8");
httpServletResponse.setContentType("application/json; charset=utf-8");
Result result = new Result (HttpStatus.UNAUTHORIZED.value(), HttpStatus.UNAUTHORIZED.getReasonPhrase(), "Invalid AccessToken.");
String s = JSON.toJSONString(result);
out = httpServletResponse.getWriter();
out.append(s);
out.flush();
return false;
} catch (Exception e) {
e.printStackTrace();
httpServletResponse.sendError(500);
return false;
}
}
}
注册拦截器
package com.cmy.interceptortest.config;
import com.cmy.interceptortest.interceptor.AccessTokenInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
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 WebAppConfig implements WebMvcConfigurer {
@Autowired
private AccessTokenInterceptor accessTokenInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(accessTokenInterceptor).addPathPatterns("/**");
}
}