zoukankan      html  css  js  c++  java
  • 拦截器Intercepter

    springmvc实现拦截器可以通过继承(不推荐)HandlerInterceptorAdapter,或者实现(推荐)HandlerInterceptor类,两种都可以,只是看个人喜欢

    继承方式验证登录:

    public class LoginInterceptor extends HandlerInterceptorAdapter{
    
    	private static final String[] unHandle = new String[]{"/user/register","/user/login"};
    	
    	private static final List<String> list = new ArrayList<String>(Arrays.asList(unHandle));
    	
    	@Override
    	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
    			throws Exception {
    		String url = request.getRequestURI();
    		if(list.contains(url)){
    			return true; 
    		}
    	//	User user = SysUtil.getCurrentUser();
    		return super.preHandle(request, response, handler);
    	}
    
    	
    }
    
    

    实现接口方式

    public class AuthIntercepter implements HandlerInterceptor {
    
        protected final Logger log = LoggerFactory.getLogger(getClass());
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            String token = request.getHeader("token");
            if (StringUtil.isNotBlank(token)) {
                //验证token
                String s = "/sso/loginInterface?token=" + token+"&loginflag=interface");
                if (s.equals("【true】")) {
                    return true;
                }
            }
            //未登录
            //todo test
    //        return false;
            throw new UnauthenticatedException();
    //        return true;
        }
        @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 {
        }
    }
    

    当然需要在springmvc配置文件spring-mvc.xml里面配置:

     <mvc:interceptors>
            <mvc:interceptor>
                <mvc:mapping path="/**" />
                <!-- 需排除拦截的地址 -->
                <mvc:exclude-mapping path="/swagger-ui.html"/>
                <mvc:exclude-mapping path="/webjars/**"/>
                <mvc:exclude-mapping path="/v2/**"/>
                <mvc:exclude-mapping path="/swagger-resources/**"/>
                <bean class="cn.gov.zjport.pen.restapi.intercepter.AuthIntercepter" />
            </mvc:interceptor>
        </mvc:interceptors>
    

    当然也可以基于注解

    @Override
    	public void addInterceptors(InterceptorRegistry registry) {
    		registry.addInterceptor(new LoginInterceptor())
    		.addPathPatterns("/**")
    		.excludePathPatterns("/static/");
    		super.addInterceptors(registry);
    	}
    

    在这里插入图片描述
    当然在拦截器里面也可以通过java方式判断不需要过滤的路径,也可以通过配置,推荐使用java方式进行设置.

    世界上所有的不公平都是由于当事人能力不足造成的.
  • 相关阅读:
    红黑树——以无厚入有间
    红黑树——依天理以神遇
    B-树 分合之道
    B-树 动机与结构
    云心出岫——Splay Tree
    双散列和再散列暨散列表总结
    开放定址法——平方探测(Quadratic Probing)
    [LeetCode 109]
    [LeetCode 110]
    [LeetCode 111]
  • 原文地址:https://www.cnblogs.com/javayida/p/13347013.html
Copyright © 2011-2022 走看看