能配置例外

先写配置文件类

FilterConfig.java

  1. package com.ty.tyzxtj.config;
  2.  
  3. import javax.servlet.Filter;
  4. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7.  
  8. import com.ty.tyzxtj.fiter.SessionFilter;
  9.  
  10. /**
  11. * 过滤器配置
  12. * @author wangjiping
  13. *
  14. */
  15. @Configuration
  16. public class FilterConfig {
  17. /**
  18. * 配置过滤器
  19. * @return
  20. */
  21. @Bean
  22. public FilterRegistrationBean someFilterRegistration() {
  23. FilterRegistrationBean registration = new FilterRegistrationBean();
  24. registration.setFilter(sessionFilter());
  25. registration.addUrlPatterns("/*");
  26. registration.addInitParameter("paramName", "paramValue");
  27. registration.setName("sessionFilter");
  28. return registration;
  29. }
  30.  
  31. /**
  32. * 创建一个bean
  33. * @return
  34. */
  35. @Bean(name = "sessionFilter")
  36. public Filter sessionFilter() {
  37. return new SessionFilter();
  38. }
  39. }

过滤器类:

  对通过过滤器的url请求都查看对应session有没有值没有就跳转到登陆页面

  1. package com.ty.tyzxtj.fiter;
  2.  
  3. import javax.servlet.*;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import javax.servlet.http.HttpSession;
  7. import org.slf4j.LoggerFactory;
  8. import org.springframework.beans.factory.annotation.Value;
  9.  
  10. import java.io.IOException;
  11. import java.util.ArrayList;
  12. import java.util.List;
  13. import java.util.regex.Matcher;
  14. import java.util.regex.Pattern;
  15.  
  16. public class SessionFilter implements Filter {
  17. private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SessionFilter.class);
  18.  
  19. @Value("$(serverurl)")
  20. private String serverurl;
  21. /**
  22. * 封装,不需要过滤的list列表
  23. */
  24. protected static List<Pattern> patterns = new ArrayList<Pattern>();
  25.  
  26. @Override
  27. public void init(FilterConfig filterConfig) throws ServletException {
  28. patterns.add(Pattern.compile("login/index.html"));
  29. patterns.add(Pattern.compile("login/login"));
  30. patterns.add(Pattern.compile("login.do"));
  31. patterns.add(Pattern.compile("main/autoFillty_rj_situation.*"));
  32. patterns.add(Pattern.compile("main/post.*"));
  33. patterns.add(Pattern.compile(".*[(\\.js)||(\\.css)||(\\.png)]"));
  34. }
  35.  
  36. @Override
  37. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
  38. HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
  39. HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
  40. String url = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length());
  41. if (url.startsWith("/") && url.length() > ) {
  42. url = url.substring();
  43. }
  44. if (isInclude(url)){
  45. chain.doFilter(httpRequest, httpResponse);
  46. return;
  47. } else {
  48. HttpSession session = httpRequest.getSession();
  49. if (session.getAttribute("loginName") != null){
  50. // session存在
  51. chain.doFilter(httpRequest, httpResponse);
  52. return;
  53. } else {
  54. // session不存在 准备跳转失败
  55. httpResponse.sendRedirect("login.do?toLogin");
  56. }
  57. }
  58. }
  59.  
  60. @Override
  61. public void destroy() {
  62.  
  63. }
  64.  
  65. /**
  66. * 是否需要过滤
  67. * @param url
  68. * @return
  69. */
  70. private boolean isInclude(String url) {
  71. for (Pattern pattern : patterns) {
  72. Matcher matcher = pattern.matcher(url);
  73. if (matcher.matches()) {
  74. return true;
  75. }
  76. }
  77. return false;
  78. }
  79.  
  80. }

注意:应用了过滤器,前提是所有请求都从服务器上走一次

    例如:如果直接在浏览器中输入链接是服务器静态资源文件可能因为浏览器缓存的原因直接访问浏览器的缓存页面没有走过滤器从而想要实现的验证用户登陆没有成功

springboot 配置过滤器的更多相关文章

  1. springboot配置过滤器和拦截器

    import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Http ...

  2. springboot 增加过滤器方法

    在访问服务器时,我们需要控制用户是否允许权限,这个时候可以使用过滤器. 在springboot 配置过滤器的方法如下: 编写过滤器代码: package com.neo.filter; import ...

  3. SpringBoot图文教程6—SpringBoot中过滤器的使用

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文系列教程技术大纲 鹿老师的Java笔记 SpringBo ...

  4. springboot中配置过滤器以及可能出现的问题

    在springboot添加过滤器有两种方式: 1.通过创建FilterRegistrationBean的方式(建议使用此种方式,统一管理,且通过注解的方式若不是本地调试,如果在filter中需要增加c ...

  5. springboot环境下配置过滤器和拦截器

    以前我们在配置过滤器和拦截器的时候,都是一个类继承一个接口,然后在xml中配置一下就ok 但是,但是,这是springboot的环境,没有xml的配置.所以我们还要继续学习啊啊啊啊啊~~~~~ 先简单 ...

  6. 使用SpringBoot的方式配置过滤器

    springboot 不存在web.xml 那么如何配置过滤器呢 springboot提供了一种方式 通过spring容器配置 @Bean public FilterRegistrationBean ...

  7. 跨站点脚本编制 - SpringBoot配置XSS过滤器(基于mica-xss)

    1. 简介   XSS,即跨站脚本编制,英文为Cross Site Scripting.为了和CSS区分,命名为XSS.   XSS是最普遍的Web应用安全漏洞.这类漏洞能够使得攻击者嵌入恶意脚本代码 ...

  8. CAS学习笔记三:SpringBoot自动配置与手动配置过滤器方式集成CAS客户端

    本文目标 基于SpringBoot + Maven 分别使用自动配置与手动配置过滤器方式集成CAS客户端. 需要提前搭建 CAS 服务端,参考 https://www.cnblogs.com/hell ...

  9. springboot 配置多数据源

    1.首先在创建应用对象时引入autoConfig package com; import org.springframework.boot.SpringApplication; import org. ...

随机推荐

  1. PHP 如何成长 (收藏自:http://www.cnblogs.com/try-better-tomorrow/p/6964036.html)

    原文题目为<php程序员学C/C++>,不过我觉得说是提升自己比较合适. 身边有几个做PHP开发的朋友,因为面试,也接触到不少的PHP工程师,他们常疑虑自己将来在技术上的成长与发展,我常给 ...

  2. 生产者——消费者模型的java代码实现

    生产者 import java.util.Random; public class Producer extends Thread { private Storage<Product> s ...

  3. 【BZOJ2325】[ZJOI2011]道馆之战 线段树+树链剖分

    [BZOJ2325][ZJOI2011]道馆之战 Description 口袋妖怪(又名神奇宝贝或宠物小精灵)红/蓝/绿宝石中的水系道馆需要经过三个冰地才能到达馆主的面前,冰地中的每一个冰块都只能经过 ...

  4. SharePoint让所有用户访问站点

    SharePoint让所有用户访问站点,可用在用户组里面添加:NT AUTHORITY\authenticated users

  5. Unique Encryption Keys

    The security of many ciphers strongly depends on the fact that the keys are unique and never re-used ...

  6. windows下在Eclipse中启动的tomcat没有乱码,单独部署到tomcat下乱码解决方案

    今天遇到了一个很奇怪的问题,在Eclipse中调试,运行项目一切正常,项目的所有编码都是统一的UTF-8.但是在单独部署到tomcat上的时候出现了中文乱码. 解决方案 第一步:确保项目,jsp页面, ...

  7. 谷歌浏览器input中的text 和 button 水平对齐的问题

    方法一  text 的vertical-align :top; 方法二  button的vertical-align: middle;

  8. Python3.6全栈开发实例[007]

    7.此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素.例如传入的列表为:[11,22,33] 返回的字典为 {0:11, ...

  9. 检查arg是方法还是函数?

    from types import MethodType,FunctionType def check(arg): """ 检查arg是方法还是函数? :param ar ...

  10. Java中的异常和处理详解(转发:https://www.cnblogs.com/lulipro/p/7504267.html)

    简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?. ...