`

『转』Spring Security的核心拦截器

 
阅读更多

1. HttpSessionContextIntegrationFilter

位于过滤器顶端,第一个起作用的过滤器。

用 途一,在执行其他过滤器之前,率先判断用户的session中是否已经存在一个SecurityContext了。如果存在,就把 SecurityContext拿出来,放到SecurityContextHolder中,供Spring Security的其他部分使用。如果不存在,就创建一个SecurityContext出来,还是放到SecurityContextHolder中, 供Spring Security的其他部分使用。

用途二,在所有过滤器执行完毕后,清空SecurityContextHolder,因为SecurityContextHolder是基于ThreadLocal的,如果在操作完成后清空ThreadLocal,会受到服务器的线程池机制的影响。

 

2. LogoutFilter

只处理注销请求,默认为/j_spring_security_logout。

用途是在用户发送注销请求时,销毁用户session,清空SecurityContextHolder,

然后重定向到注销成功页面。可以与rememberMe之类的机制结合,在注销的同时清空用户cookie。

 

3. AuthenticationProcessingFilter

处理form登陆的过滤器,与form登陆有关的所有操作都是在此进行的。

默认情况下只处理/j_spring_security_check请求,这个请求应该是用户使用form登陆后的提交地址

此过滤器执行的基本操作时,通过用户名和密码判断用户是否有效,如果登录成功就跳转到成功页面

(可能是登陆之前访问的受保护页面,也可能是默认的成功页面),如果登录失败,就跳转到失败页面。

 

4. DefaultLoginPageGeneratingFilter

此过滤器用来生成一个默认的登录页面,默认的访问地址为/spring_security_login,

这个默认的登录页面虽然支持用户输入用户名,密码,也支持rememberMe功能,但是因为太难看了,

只能是在演示时做个样子,不可能直接用在实际项目中。

 

5. BasicProcessingFilter

此过滤器用于进行basic验证,功能与AuthenticationProcessingFilter类似,只是验证的方式不同。

 

6. SecurityContextHolderAwareRequestFilter

此过滤器用来包装客户的请求。目的是在原始请求的基础上,为后续程序提供一些额外的数据。比如getRemoteUser()时直接返回当前登陆的用户名之类的。

 

7. RememberMeProcessingFilter

此过滤器实现RememberMe功能,当用户cookie中存在rememberMe的标记,此过滤器会根据标记自动实现用户登陆,并创建SecurityContext,授予对应的权限。

 

8. AnonymousProcessingFilter

为了保证操作统一性,当用户没有登陆时,默认为用户分配匿名用户的权限。

 

9. ExceptionTranslationFilter

此过滤器的作用是处理中FilterSecurityInterceptor抛出的异常,然后将请求重定向到对应页面,或返回对应的响应错误代码

 

10. SessionFixationProtectionFilter

防御会话伪造攻击。有关防御会话伪造的详细信息

 

11. FilterSecurityInterceptor

用户的权限控制都包含在这个过滤器中。

功能一:如果用户尚未登陆,则抛出AuthenticationCredentialsNotFoundException“尚未认证异常”。

功能二:如果用户已登录,但是没有访问当前资源的权限,则抛出AccessDeniedException“拒绝访问异常”。

功能三:如果用户已登录,也具有访问当前资源的权限,则放行。

所有的过滤器都会实现SpringSecurityFilter安全过滤器。。。

 

image

分享到:
评论

相关推荐

    SpringMvc 拦截器

    在实际应用中,拦截器可以结合Spring Security进行权限控制,例如检查用户是否已登录,或者在处理完请求后记录操作日志。还可以利用`ModelAndView`对象在`postHandle`方法中修改视图数据,以实现动态页面布局或添加...

    spring boot 登录拦截器

    在Spring Boot应用中,登录拦截器是一个至关重要的组件,它用于保护特定的Web资源,确保只有经过身份验证的用户才能访问。Spring Boot结合了Spring MVC框架,提供了方便的方式来实现这样的拦截器。本篇文章将深入...

    Spring Security 资料合集

    - Spring Security 的核心是过滤器链,它包含了一系列安全过滤器,如`FilterSecurityInterceptor`和`AuthenticationProcessingFilter`。这些过滤器在请求处理前进行拦截,执行认证和授权操作。 3. **安全性配置**...

    Spring Security 安全管理

    - **Interceptors(拦截器)**:Spring Security 使用拦截器来控制对请求的访问。这些拦截器在请求生命周期的不同阶段执行,例如过滤非法请求、进行认证或授权等。 - **GrantedAuthority(权限)**:当用户成功认证...

    spring security 完整项目实例

    此外,Spring Security提供了过滤器链,这是处理请求的关键部分。如AnonymousAuthenticationFilter负责匿名用户的处理,UsernamePasswordAuthenticationFilter处理基于表单的登录,而RememberMeAuthenticationFilter...

    SpringSecurity笔记,编程不良人笔记

    - 用户提交登录请求,请求被SpringSecurity的过滤器拦截。 - 认证过滤器(如`UsernamePasswordAuthenticationFilter`)提取用户名和密码,并调用`UserDetailsService`进行验证。 - 验证成功后,创建`...

    springsecurity学习笔记

    在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...

    spring spring security2.5 jar

    2. **配置文件**:在Spring的XML配置文件中,需要添加Spring Security的相关配置,例如定义安全拦截器、认证提供者、访问决策策略等。 3. **代码集成**:在业务代码中,可以通过`@Secured`注解来标记需要权限控制的...

    spring security3 中文版本

    ### Spring Security 3.0.1 中文版知识点解析...通过上述知识点的介绍,我们了解了 Spring Security 的核心概念、配置方式以及一些高级特性,这有助于开发者更好地利用 Spring Security 为应用程序构建强大的安全防护。

    SpringSecurity素材.rar

    5. **拦截器与URL保护**:讲解如何使用SpringSecurity的拦截器机制,对特定URL进行保护,确保只有经过身份验证和授权的用户才能访问。 6. **自定义登录逻辑**:可能包括如何处理登录失败和成功后的回调,以及自定义...

    spring security 官方文档

    3. **过滤器链(Filter Chain)**:Spring Security的核心是其过滤器链,它在HTTP请求被处理之前进行拦截。过滤器链包含多个预定义的过滤器,如`HttpServletRequestWrapperFilter`、`AnonymousAuthenticationFilter`...

    Spring Security 文档

    在开始实施Spring Security之前,需要确保SSH2(Struts2、Spring、Hibernate)环境已经搭建完毕,并且已经引入了Spring Security 3.0.2的五个核心JAR包和其他相关依赖。配置完成后,可以通过Spring Security提供的...

    spring_security_3.1

    3. **过滤器链**:Spring Security的核心是过滤器链,它拦截HTTP请求并执行安全逻辑。`FilterSecurityInterceptor`是其中的关键组件,它处理授权检查。3.1版中,你可以自定义过滤器顺序和配置,以适应不同的应用需求...

    spring-security 官方文档 中文版

    - **安全对象和 AbstractSecurityInterceptor**:安全拦截器实现了对业务层方法调用的安全性控制。 - **配置属性是什么?**:定义了 AbstractSecurityInterceptor 的配置属性。 - **RunAsManager**:负责执行 Run...

    狂神Spring Security静态资源

    3. **使用Spring Security的访问决策管理器(AccessDecisionManager)**:如果你希望控制哪些角色可以访问静态资源,可以实现自己的访问决策管理器,然后在配置中指定使用这个管理器。 4. **使用HTTP基本认证或OAuth2...

    springboot springsecurity动态权限控制

    在这个“springboot springsecurity动态权限控制”的主题中,我们将深入探讨如何在Spring Boot项目中集成Spring Security,实现动态权限控制,让菜单权限的管理更加灵活和高效。 首先,我们需要理解Spring Security...

    Spring Security 3.pdf

    1. **Filter Chain**: Spring Security 的核心在于其过滤器链,它拦截HTTP请求并执行相应的安全处理。过滤器链由多个特定于安全的过滤器组成,如`DelegatingFilterProxy`、`ChannelProcessingFilter`、`...

    Spring security认证授权

    首先,Spring Security的核心概念包括认证(Authentication)和授权(Authorization)。认证是确认用户身份的过程,而授权则是确定认证后的用户是否有权访问特定资源。 1. **认证过程**: - **配置**:在Spring ...

    基本的spring mvc + spring security实现的登录(无数据库)

    - **配置**:通常通过Java配置或XML配置来设置Spring MVC的组件,如定义映射路径、拦截器等。 - **MVC模式**:Model代表业务数据,View负责渲染视图,Controller处理用户请求并协调Model和View。 2. **Spring ...

Global site tag (gtag.js) - Google Analytics