zoukankan      html  css  js  c++  java
  • Spring Mvc session拦截器实现

              Spring Mvc拦截器实现session过期跳转到登录页面

    • 配置拦截器
        <mvc:interceptors>  
    	    <mvc:interceptor>  
    	        <mvc:mapping path="/**/*.html"/>  
    	        <bean class="com.rrtong.frame.plugins.SecurityInterceptor">
    		      <property name="excludedUrls">  
    		        <list>  
    		          <value>/login.html</value>  
    		          <value>/auth.html</value>    
    		        </list>  
    		      </property>  	       
    	        </bean>  
    	    </mvc:interceptor>  
    	</mvc:interceptors>  
    • 实现拦截器
    package com.rrtong.frame.plugins;
    
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import com.rrtong.util.Constants;
    
    /*实现登录访问验证拦截器*/
    public class SecurityInterceptor implements HandlerInterceptor {
    	/*过滤不需要验证的url*/
    	private List<String> excludedUrls;  
    	
    	public void setExcludedUrls(List<String> excludedUrls) {  
    	    this.excludedUrls = excludedUrls;  
    	}  	
    	
    	@Override
    	public boolean preHandle(HttpServletRequest request,
    			HttpServletResponse response, Object handler) throws Exception {
            String requestUri = request.getRequestURI();    
            
            for (String url : excludedUrls) {  
            	if (requestUri.endsWith(url)) {  
            		return true;  
            	}  
            }          
            		
            /*判断是否需要过滤的页面*/
            HttpSession session = request.getSession();  
            
            if(session.getAttribute(Constants.Session.CURRENT_USER_ATTR_NAME) == null){
            	/*跳转到登录页*/
            	request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
            	
            	return false;
            }
            return true;
    	}
    
    	@Override
    	public void postHandle(HttpServletRequest request, HttpServletResponse response,
    			Object arg2, ModelAndView arg3) throws Exception {
    	}
    
    	@Override
    	public void afterCompletion(HttpServletRequest request,
    			HttpServletResponse response, Object arg2, Exception arg3)
    			throws Exception {
    	}		
    }


  • 相关阅读:
    SpringBoot自动装配源码
    对称加密、非对称加密、数字签名
    k8s部署mysql数据持久化
    docker部署 springboot 多模块项目+vue
    ES入门及安装软件
    prometheus入门介绍及相关组件、原理讲解
    流水线 Sonar 代码扫描
    postgresql数据库 查询表名、备注及字段、长度、是否可控、是否主键等信息
    Helm中Tiller镜像下载失败的解决办法
    程序员孔乙己
  • 原文地址:https://www.cnblogs.com/wala-wo/p/5119227.html
Copyright © 2011-2022 走看看