加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

spring security 图解过滤器的使用

发布时间:2020-12-15 01:51:00 所属栏目:大数据 来源:网络整理
导读:div class="figure-contents" 1.?HttpSessionContextIntegrationFilter 位于过滤器顶端,第一个起作用的过滤器。 用途一,在执行其他过滤器之前,率先判断用户的session中是否已经存在一个SecurityContext了。如果存在,就把SecurityContext拿出来,放到Secu

<div class="figure-contents">

auto-config='true'时的过滤器列表

1.?HttpSessionContextIntegrationFilter

org.springframework.security.context.HttpSessionContextIntegrationFilter

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

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

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

org.springframework.security.ui.logout.LogoutFilter

图?11.3.?org.springframework.security.ui.logout.LogoutFilter

?

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

用途是在用户发送注销请求时,销毁用户session,清空SecurityContextHolder,然后重定向到注销成功页面。可以与rememberMe之类的机制结合,在注销的同时清空用户cookie。

org.springframework.security.ui.webapp.AuthenticationProcessingFilter

图?11.4.?org.springframework.security.ui.webapp.AuthenticationProcessingFilter

?

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

默认情况下只处理/j_spring_security_check请求,这个请求应该是用户使用form登陆后的提交地址,form所需的其他参数可以参考。

此过滤器执行的基本操作时,通过用户名和密码判断用户是否有效,如果登录成功就跳转到成功页面(可能是登陆之前访问的受保护页面,也可能是默认的成功页面),如果登录失败,就跳转到失败页面。

org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter

图?11.5.?org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter

?

此过滤器用来生成一个默认的登录页面,默认的访问地址为/spring_security_login,这个默认的登录页面虽然支持用户输入用户名,密码,也支持rememberMe功能,但是因为太难看了,只能是在演示时做个样子,不可能直接用在实际项目中。

?

org.springframework.security.ui.basicauth.BasicProcessingFilter

图?11.6.?org.springframework.security.ui.basicauth.BasicProcessingFilter

?

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

org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter

图?11.7.?org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter

?

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

org.springframework.security.ui.rememberme.RememberMeProcessingFilter

图?11.8.?org.springframework.security.ui.rememberme.RememberMeProcessingFilter

?

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

org.springframework.security.providers.anonymous.AnonymousProcessingFilter

图?11.9.?org.springframework.security.providers.anonymous.AnonymousProcessingFilter

?

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

org.springframework.security.ui.ExceptionTranslationFilter

图?11.10.?org.springframework.security.ui.ExceptionTranslationFilter

?

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

org.springframework.security.ui.SessionFixationProtectionFilter

图?11.11.?org.springframework.security.ui.SessionFixationProtectionFilter

?

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

org.springframework.security.intercept.web.FilterSecurityInterceptor

图?11.12.?org.springframework.security.intercept.web.FilterSecurityInterceptor

?

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读