java Spring Security 总结一 7

accessDeniedHandler用于处理AccessDeniedException异常,当用户没有权限访问当前请求的资源时抛出此异常,并跳转自这里配置的/accessDenied.jsp页面。

    authenticationEntryPoint(认证入口点),这里定义了用户登录的页面。系统为我们提供了3个认证入口点的实现:

 

认 证 入 口 点

作           用

BasicProcessingFilterEntryPoint

通过向浏览器发送一个HTTP 401(未授权)消息,由浏览器弹出登录对话框,提示用户登录

AuthenticationProcessingFilterEntryPoint

将用户重定向到一个基于HTML表单的登录页面

CasProcessingFilterEntryPoint

将用户重定向至一个Yale CAS登录页面

    这里我们使用AuthenticationProcessingFilterEntryPoint认证入口点,提供给用户一个友好的登录界面,只是为了给用户更好的体验。

    filterSecurityInterceptor(过滤器安全拦截器),该过滤器首先调用认证管理器来判断用户是否已被成功验证,如果没有被验证则重定向到登录界面。否则,从Authentication获取用户的权限信息,然后从objectDefinitionSource中获取URL所对应的权限,最后调用accessDecisionManager(访问决策管理器)来判断用户当前拥有的权限是否与当前受保护的URL资源对应的权限匹配,如果匹配就可以访问该URL资源,否则将抛出AccessDeniedException异常并返回客户端浏览器一个403错误(如果用户定义了 accessDenied页面则会被重定向到该页,见:异常处理过滤器exceptionTranslationFilter中配置的 accessDeniedHandler Bean),访问决策管理的的工作机制将在随后更详细介绍,这里先给出过滤器安全拦截器的配置如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->  1  < bean  id ="filterSecurityInterceptor"
 2 
 3     class ="org.springframework.security.intercept.web.FilterSecurityInterceptor"
 4 
 5     p:authenticationManager-ref ="authenticationManager"
 6 
 7     p:accessDecisionManager-ref ="accessDecisionManager" >
 8        < property  name ="objectDefinitionSource" >
 9           < value > <![CDATA[
10 
11       CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
12             PATTERN_TYPE_APACHE_ANT
13             /admins/**=ROLE_SUPERVISOR      
14              /user/**=ROLE_USER,IS_AUTHENTICATED_REMEMBERED       
15              /default.jsp=ROLE_USER,IS_AUTHENTICATED_REMEMBERED
16            /**=IS_AUTHENTICATED_ANONYMOUSLY
17        ]]> </ value >
18      </ property >
19 </ bean >

    从配置可以看出来,过滤器安全拦截器用到了我们前面配置的认证管理器,过滤器安全拦截器使用authenticationManager并调用它的 providers(提供者列表)来对用户的身份进行验证并获取用户拥有的权限。如果用户被成功认证,过滤器安全拦截器将会使用 accessDecisionManager(访问决策管理器)来判断已认证的用户是否有权限访问受保护的资源,这些受保护的资源由 objectDefinitionSource属性定义。

    访问决策管理器(accessDecisionManager):

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->  1  < bean  id ="accessDecisionManager"
 2     class ="org.springframework.security.vote.AffirmativeBased"
 3       p:allowIfAllAbstainDecisions ="false" >
 4        < property  name ="decisionVoters" >
 5           < list >
 6              < bean  class ="org.springframework.security.vote.RoleVoter" />
 7              < bean  class ="org.springframework.security.vote.AuthenticatedVoter" />
 8           </ list >
 9        </ property >
10  </ bean >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值