就拿登录拦截器做个列子!
1:导包:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
2:创建拦截器:LoginInterceptor
package com.jhzx.foilbillplatform.web.interceptor;
import com.alibaba.fastjson.JSON;
import com.jhzx.foilbillplatform.common.util.FoilResult;
import org.springframework.stereotype.Component;
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;
import static com.jhzx.foilbillplatform.common.util.Constants.SESSION_ADMIN;
@Component
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object agentUser = request.getSession().getAttribute(SESSION_ADMIN);
if(agentUser==null){
return reLogin(response);
}
return true;
}
private boolean reLogin(HttpServletResponse response) throws IOException {
PrintWriter out;
try{
FoilResult res = FoilResult.build(201,"用户需要重新登陆","login");
out = response.getWriter();
out.append(JSON.toJSONString(res));
return false;
} catch (Exception e){
e.printStackTrace();
response.sendError(500);
return false;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
3:配置拦截器:
package com.jhzx.foilbillplatform.web.config;
import com.jhzx.foilbillplatform.web.interceptor.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600) //spring redis session的配置注解(在这里不用理会);
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private LoginInterceptor loginInterceptor;
/**
* 重写添加拦截器方法并添加配置拦截器
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor).addPathPatterns("/**") //拦截哪些路径("/**":代表拦截所有路径);
.excludePathPatterns("/login", "/logout","/error","docs.html"); //不拦截哪些路径;
}
}
注 : 有什么不足望各位朋友评论留言!!!