spring 过滤器- 过滤登陆请求路径(过滤静态资源跳转到登陆页面)

public class LoginedFilter implements Filter {

/**    * 排除的地址    */   private Map<String, Boolean> ignore;   /**    * 排除的后缀    */   private Map<String, Boolean> ignoreExt;

/**    * <b>功能描述:</b>实现接口,登录验证<br>    * <b>修订记录:</b><br>

*/   @Override   public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException,         ServletException {      HttpServletRequest request = (HttpServletRequest)arg0;      HttpServletResponse response = (HttpServletResponse) arg1;

String a =  request.getRequestURI();

String ss =  request.getRequestURI().replaceFirst(request.getContextPath(), "");

String address = request.getRequestURI().replaceFirst(request.getContextPath(), "").substring(1);

String ext = "";      if(address.lastIndexOf(".") > 0) {         ext = address.substring(address.lastIndexOf(".") + 1);      }      if(address.indexOf("/") != -1) {         address = address.substring(address.indexOf("/") + 1, address.length());      }

if(null == this.ignore.get(address) && null == this.ignoreExt.get(ext)) {         HttpSession session = request.getSession();         // 如果session为空,则跳转到登录页面。//       if(null == session.getAttribute("user") || session.isNew()) {               response.sendRedirect(request.getContextPath()+"/index");               return ;         //}      }      arg2.doFilter(arg0, arg1);

}

@Override   public void init(FilterConfig config) throws ServletException {      // 初始化排除列表      if(null == this.ignore) {         this.ignore = new HashMap<String, Boolean>();      }      if(null == this.ignoreExt) {         this.ignoreExt = new HashMap<String, Boolean>();      }      // 读取web.xml中的配置列表,装入Map对象,排除内容为Key,Value为true。      String ignoreConfig = config.getInitParameter("ignore");      String[] ignoreConfigArray = ignoreConfig.split(",");      for(String string : ignoreConfigArray) {         this.ignore.put(string.trim(), true);      }      String ignoreExtConfig = config.getInitParameter("ignoreExt");      String[] ignoreExtConfigArray = ignoreExtConfig.split(",");      for(String string : ignoreExtConfigArray) {         this.ignoreExt.put(string.trim(), true);      }   }

@Override   public void destroy() {      // 销毁时清除排除列表      this.ignore.clear();      this.ignore = null;      this.ignoreExt.clear();      this.ignoreExt = null;   }

//下面是web.xml 配置
<filter>  <filter-name>urlfilter</filter-name>  <filter-class>com.payease.chains.order.common.Filter.LoginedFilter</filter-class>  <init-param>    <description>排除过滤的前缀</description>    <param-name>ignore</param-name>    <param-value>index,chains,main,fund,order,fundDetail,orderList,logout,OmsUpload,merchant,upload,main1,main2</param-value>  </init-param>  <init-param>    <description>排除过滤的后缀</description>    <param-name>ignoreExt</param-name>    <param-value>js,css,jpg,gif,png,bmp,jpeg,ico</param-value>  </init-param></filter><filter-mapping>  <filter-name>urlfilter</filter-name>  <url-pattern>/*</url-pattern></filter-mapping><filter-mapping>  <filter-name>urlfilter</filter-name>  <url-pattern>/**</url-pattern></filter-mapping>
				
时间: 2024-11-13 16:47:55

spring 过滤器- 过滤登陆请求路径(过滤静态资源跳转到登陆页面)的相关文章

关于Spring boot2.0+配置拦截器拦截静态资源的问题

第一次遇到这个问题的时候,简直是一脸蒙逼,写了一个拦截器以后,静态资源就不能访问了,到处查找才知道是版本问题 解决办法: 第一步:定义一个类实现 实现WebMvcConfigurer的类中拦截器中添加放行资源处添加静态资源文件路径: @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(sessionInterceptor).addPathPatterns("/&

Thymeleaf静态资源引入方式及公共页面代码抽取

静态资源引入 Thymeleaf模板引擎url问题,要用如下的方式写,确保在任何情况下都能访问到 <!-- Bootstrap core CSS --> <link href="bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- 引用webjars的方式引入静态资源 --> <link th:href="@{/webjars/bootstrap/

ASP.NET - (Session)后台登陆时,判断是不是已经登陆,如果不是,跳转回登陆页

admin(小写):用户输入的账户. password(小写):用户输入的密码. 1.先将用户名和密码,存储到Session会话中. Session["Admin"] = admin; Session["Password"] = Password; 2. · 然后在进入后台的时候,在加载事件中判断session是不是唯恐,以及是不是正确的账号和密码. · 并不仅仅是后台中的一个界面进行验证,所有的后台界面,只要有必要,都可以按照这种格式进行验证. //账号密码有任一

nodejs请求静态资源404错误,后台需处理返回http请求的静态资源

nodejs小白在做的demo时后台返回主页面html后,页面请求引用的js文件,后台没有返回对应请求路径的静态资源,所以报错.原来在java开发下没有注意过这种问题,一般除了WEB-INF下的文件不能访问外,其他资源文件都可以直接用http路径访问. 1.使用http模块处理(http模块时nodejs内置模块) public文件夹下的文件js,html默认为静态资源,后台读取这些文件然后返回给前台. 1 var http = require('http'); 2 var fs = requi

Spring MVC静态资源处理(转)

优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往使用 *.do . *.xhtml等方式.这就决定了请求URL必须是一个带后缀的URL,而无法采用真正的REST风格的URL. 如果将DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,包括静态资源的请求,Spring MVC会将它们当

Spring MVC静态资源处理——&lt;mvc:resources /&gt; ||&lt;mvc:default-servlet-handler /&gt;

优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往使用 *.do . *.xhtml等方式.这就决定了请求URL必须是一个带后缀的URL,而无法采用真正的REST风格的URL. 如果将DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,包括静态资源的请求,Spring MVC会将它们当

Spring MVC静态资源处理

优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往使用 *.do . *.xhtml等方式.这就决定了请求URL必须是一个带后缀的URL,而无法采用真正的REST风格的URL. 如果将DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,包括静态资源的请求,Spring MVC会将它们当

Spring Boot干货系列:(六)静态资源和拦截器处理

Spring Boot干货系列:(六)静态资源和拦截器处理 原创 2017-04-05 嘟嘟MD 嘟爷java超神学堂 前言 本章我们来介绍下SpringBoot对静态资源的支持以及很重要的一个类WebMvcConfigurerAdapter. 正文 前面章节我们也有简单介绍过SpringBoot中对静态资源的默认支持,今天详细的来介绍下默认的支持,以及自定义扩展如何实现. 默认资源映射 Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration

spring boot 静态资源。。

spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性. 建议大家使用Spring Boot的默认配置方式,如果需要特殊处理的再通过配置进行修改. 如果想要自己完全控制WebMVC,就需要在@Configuration注解的配置类上增加@EnableWebMvc(@SpringBootApplication 注解的程序入口类已经包含@Configuration),增加该注解以后WebMvcAutoConfiguration中配