Spring Security(2):常用权限拦截器

Spring Security提供了很多过滤器,它们拦截Servlet请求,并将这些请求转交给认证处理过滤器和访问角色处理过滤器,认证用户身份和用户权限,以保证web资源的安全性

1c334fe7ebec56ac43833899f1a660ce.png

SecurityContextPersistenceFilter

用途:位于过滤器的顶端。

1:在执行其它过滤器之前,判断用户的session中是否已经存在了一个SecurityContext上下文,如果存在,就放入SecurityContextHolder中;否则则创建。

2:在执行完其它的过滤器之后,清空SecurityContextHolder中的内容,因为SecurityContextHolder是基于ThreadLocal的。

LogoutFilter

用途:用于注销请求。

1:在用户发送注销请求时,销毁用户的session,并清空SecurityContextHolder,重定向到注销成功页面。

2:与记住密码功能结合的时候,可以清空用户的cookie。

AbstractAuthenticationProcessingFilter

用途:处理Form登录过滤器,与form登录相关的所有请求都在此处理的。

1:通过用户登录的用户名和密码是否有效,如果成功就跳转到成功页面。

DefaultLoginPageGeneratingFilter

用途:用来生成一个默认的登录页面。(几乎不用)

BasicAuthenticationFilter

用途:用来做Basic认证的。

SecurityContextHolderAwareRequestFilter

用途:包装用户的请求,目的是为后面的程序提供额外的数据。

RememberMeAuthenticationFilter

用途:记住密码功能。依赖Cookie实现。

AnonymousAuthenticationFilter

用途:保证操作的统一性,当用户没有登录时,用户操作页面的时候为用户默认分配匿名用户的权限。

ExceptionTranslationFilter

用途:针对于过滤器抛出的异常,然后将请求重定向到对应页面或错误代码,在项目中我们都会对其进行处理

SessionManagementFilter

用途:防御回话伪造***,主要在用户登录成功之后,销毁用户的当前session,并重新生成一个session。

FilterSecurityInterceptor

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

1:如果用户尚未登录,则抛出尚未认证的异常。

2:如果用户已经登录,但是没有访问当前资源的权限,则抛出拒绝访问的异常。

3;如果用户已经登录,有访问当前资源的权限,则放进。


上面这些拦截器是按怎样的顺序执行的呢?FilterChainProxy

  安装顺序来调用一组Filter,使这些Filter既能完成认证授权的本职工作,又能享用Spring IOC的功能。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章