spring boot 配置Filter过滤器的方法

2025-05-29 0 102

Filter 过滤器是web开发中很重要的一个组件,下面以一个session登陆的例子介绍下spring boot中如何使用Filter

首先要准备一个实现了Filter的接口的类 SessionFilter

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84
import org.slf4j.LoggerFactory;

import javax.servlet.*;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

* Created by mazhenhua on 2016/12/27.

*

* 过滤器

*/

public class SessionFilter implements Filter {

private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SessionFilter.class);

/**

* 封装,不需要过滤的list列表

*/

protected static List<Pattern> patterns = new ArrayList<Pattern>();

@Override

public void init(FilterConfig filterConfig) throws ServletException {

}

@Override

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {

HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;

HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;

logger.info("aaaaaaaaaa");

String url = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length());

if (url.startsWith("/") && url.length() > 1) {

url = url.substring(1);

}

if (isInclude(url)){

chain.doFilter(httpRequest, httpResponse);

return;

} else {

HttpSession session = httpRequest.getSession();

if (session.getAttribute("") != null){

// session存在

chain.doFilter(httpRequest, httpResponse);

return;

} else {

// session不存在 准备跳转失败

/* RequestDispatcher dispatcher = request.getRequestDispatcher(path);

dispatcher.forward(request, response);*/

chain.doFilter(httpRequest, httpResponse);

return;

}

}

}

@Override

public void destroy() {

}

/**

* 是否需要过滤

* @param url

* @return

*/

private boolean isInclude(String url) {

for (Pattern pattern : patterns) {

Matcher matcher = pattern.matcher(url);

if (matcher.matches()) {

return true;

}

}

return false;

}

}

实际开发中往往有很多请求要直接请求进来,不需要鉴权登陆的,所以代码中过滤掉这种请求的代码,装进list就好了。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22
/**

* 配置过滤器

* @return

*/

@Bean

public FilterRegistrationBean someFilterRegistration() {

FilterRegistrationBean registration = new FilterRegistrationBean();

registration.setFilter(sessionFilter());

registration.addUrlPatterns("/*");

registration.addInitParameter("paramName", "paramValue");

registration.setName("sessionFilter");

return registration;

}

/**

* 创建一个bean

* @return

*/

@Bean(name = "sessionFilter")

public Filter sessionFilter() {

return new SessionFilter();

}

经过上面这俩步的配置过滤器基本上就可以了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:http://blog.csdn.net/mzh1992/article/details/53895613

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 spring boot 配置Filter过滤器的方法 https://www.kuaiidc.com/117836.html

相关文章

发表评论
暂无评论