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

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

1c334fe7ebec56ac43833899f1a660ce.png

SecurityContextPersistenceFilter安全

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

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

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

LogoutFilterspa

用途:用于注销请求。orm

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

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

AbstractAuthenticationProcessingFilterget

用途:处理Form登陆过滤器,与form登陆相关的全部请求都在此处理的。

1:经过用户登陆的用户名和密码是否有效,若是成功就跳转到成功页面。

DefaultLoginPageGeneratingFilter

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

BasicAuthenticationFilter

用途:用来作Basic认证的。

SecurityContextHolderAwareRequestFilter

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

RememberMeAuthenticationFilter

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

AnonymousAuthenticationFilter

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

ExceptionTranslationFilter

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

SessionManagementFilter

用途:防护回话伪造***,主要在用户登陆成功以后,销毁用户的当前session,并从新生成一个session。

FilterSecurityInterceptor

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

1:若是用户还没有登陆,则抛出还没有认证的异常。

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

3;若是用户已经登陆,有访问当前资源的权限,则放进。


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

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

相关文章
相关标签/搜索