springsecurity图解过滤器.docx
- 文档编号:30178157
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:9
- 大小:254.02KB
springsecurity图解过滤器.docx
《springsecurity图解过滤器.docx》由会员分享,可在线阅读,更多相关《springsecurity图解过滤器.docx(9页珍藏版)》请在冰豆网上搜索。
springsecurity图解过滤器
第 9 章 图解过滤器
图解SpringSecurity默认使用的过滤器
9.1. 首先看一下auto-config="true"的情况下,默认会用到哪些过滤器。
图 9.1. auto-config='true'时的过滤器列表
9.2. HttpSessionContextIntegrationFilter
图 9.2. org.springframework.security.context.HttpSessionContextIntegrationFilter
位于过滤器顶端,第一个起作用的过滤器。
用途一,在执行其他过滤器之前,率先判断用户的session中是否已经存在一个SecurityContext了。
如果存在,就把SecurityContext拿出来,放到SecurityContextHolder中,供SpringSecurity的其他部分使用。
如果不存在,就创建一个SecurityContext出来,还是放到SecurityContextHolder中,供SpringSecurity的其他部分使用。
用途二,在所有过滤器执行完毕后,清空SecurityContextHolder,因为SecurityContextHolder是基于ThreadLocal的,如果在操作完成后清空ThreadLocal,会受到服务器的线程池机制的影响。
9.3. LogoutFilter
图 9.3. org.springframework.security.ui.logout.LogoutFilter
只处理注销请求,默认为/j_spring_security_logout。
用途是在用户发送注销请求时,销毁用户session,清空SecurityContextHolder,然后重定向到注销成功页面。
可以与rememberMe之类的机制结合,在注销的同时清空用户cookie。
9.4. AuthenticationProcessingFilter
图 9.4. org.springframework.security.ui.webapp.AuthenticationProcessingFilter
处理form登陆的过滤器,与form登陆有关的所有操作都是在此进行的。
默认情况下只处理/j_spring_security_check请求,这个请求应该是用户使用form登陆后的提交地址,form所需的其他参数可以参考:
?
?
?
。
此过滤器执行的基本操作时,通过用户名和密码判断用户是否有效,如果登录成功就跳转到成功页面(可能是登陆之前访问的受保护页面,也可能是默认的成功页面),如果登录失败,就跳转到失败页面。
9.5. DefaultLoginPageGeneratingFilter
图 9.5. org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter
此过滤器用来生成一个默认的登录页面,默认的访问地址为/spring_security_login,这个默认的登录页面虽然支持用户输入用户名,密码,也支持rememberMe功能,但是因为太难看了,只能是在演示时做个样子,不可能直接用在实际项目中。
如果想自定义登陆页面,可以参考:
第 4 章自定义登陆页面。
9.6. BasicProcessingFilter
图 9.6. org.springframework.security.ui.basicauth.BasicProcessingFilter
此过滤器用于进行basic验证,功能与AuthenticationProcessingFilter类似,只是验证的方式不同。
有关basic验证的详细情况,我们会在后面的章节中详细介绍。
有关basic验证的详细信息,可以参考:
第 12 章basic认证。
9.7. SecurityContextHolderAwareRequestFilter
图 9.7. org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter
此过滤器用来包装客户的请求。
目的是在原始请求的基础上,为后续程序提供一些额外的数据。
比如getRemoteUser()时直接返回当前登陆的用户名之类的。
9.8. RememberMeProcessingFilter
图 9.8. org.springframework.security.ui.rememberme.RememberMeProcessingFilter
此过滤器实现RememberMe功能,当用户cookie中存在rememberMe的标记,此过滤器会根据标记自动实现用户登陆,并创建SecurityContext,授予对应的权限。
有关rememberMe功能的详细信息,可以参考:
第 14 章自动登录。
9.9. AnonymousProcessingFilter
图 9.9. org.springframework.security.providers.anonymous.AnonymousProcessingFilter
为了保证操作统一性,当用户没有登陆时,默认为用户分配匿名用户的权限。
有关匿名登录功能的详细信息,可以参考:
第 15 章匿名登录。
9.10. ExceptionTranslationFilter
图 9.10. org.springframework.security.ui.ExceptionTranslationFilter
此过滤器的作用是处理中FilterSecurityInterceptor抛出的异常,然后将请求重定向到对应页面,或返回对应的响应错误代码。
9.11. SessionFixationProtectionFilter
图 9.11. org.springframework.security.ui.SessionFixationProtectionFilter
防御会话伪造攻击。
有关防御会话伪造的详细信息,可以参考:
第 16 章防御会话伪造。
9.12. FilterSecurityInterceptor
图 9.12. org.springframework.security.intercept.web.FilterSecurityInterceptor
用户的权限控制都包含在这个过滤器中。
功能一:
如果用户尚未登陆,则抛出AuthenticationCredentialsNotFoundException“尚未认证异常”。
功能二:
如果用户已登录,但是没有访问当前资源的权限,则抛出AccessDeniedException“拒绝访问异常”。
功能三:
如果用户已登录,也具有访问当前资源的权限,则放行。
至此,我们完全展示了默认情况下SpringSecurity中使用到的过滤器,以及每个过滤器的应用场景和显示功能,下面我们会对这些过滤器的配置和用法进行逐一介绍
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- springsecurity 图解 过滤器