Spring Security 学习总结1_3

 

与认证管理器类似,访问决策管理器也不是由自己来实现访问控制的,而是通过一组投票者 来投票决定(通过调用投票者vote 方法),访问决策管理器统计投票结果并最终完成决策工作。下表列出了系统提供的3个访问决策管理器的实现:

访问 决策管理器

如 何 决 策

AffirmativeBased

当至少有一个投票者投允 许访问 票 时 允 许访问

ConsensusBased

当所有投票者都投允 许访问 票 时 允 许访问

UnanimousBased

当没有投票者投拒 绝访问 票 时 允 许访问

decisionVoters 属性为 访问决策管理器定义了一组进行投票工作的投票者,那么这些投票者是如何进行投票的呢?这就需要提org.springframework.security.vote. AccessDecisionVoter 接口,所有的投票者都实现了这个接口并实现了其中的vote方法。该接口中还定义了3个int类型的常量:

int ACCESS_GRANTED = 1 ; (投赞成票

int ACCESS_ABSTAIN = 0 ; (投弃权票

int ACCESS_DENIED = -1 ; (投反对票

每个决策投票者都返回这3个常量中一个,这取决与用户是否有权限访问当前请求的资源,访问决策管理器再对这些投票结果进行统计。认证投票者的配置如上面所示。

loggerListener 是一个可选项,它和我们前面配置的Bean或者过滤器没有关系,只是监听系统的一些事件(
实现了ApplicationListener 监听接口),被它监听的事件包括AuthenticationCredentialsNotFoundEvent 事件,AuthorizationFailureEvent 事件,AuthorizedEvent 事件,PublicInvocationEvent 事件,相信你从他们的名字就能看出来是一些什么样的事件,除非你的e文比我还差劲。loggerListener配置如下:

1   < bean  id ="loggerListener"  class ="org.springframework.security.event.authentication.LoggerListener" />

到此,本例所涉及到的所有配置都介绍完了,在下一篇中会介绍方法安全拦截器,以及如何使用它来保护我们的方法调用,以及前面提到过的会在下一篇中介绍的,这里不在一一列出。

接下来就是JSP页面了,首先是login.jsp:

 1   < c:if  test ="${not empty param.login_error}" >
 2       登录失败,请重试。错误原因: < br />
 3        < font  color ="red" >
 4            < c:if  test ="${not empty SPRING_SECURITY_LAST_EXCEPTION}" >
 5                < c:out  value ="${SPRING_SECURITY_LAST_EXCEPTION}" ></ c:out >
 6            </ c:if >
 7        </ font >
 8   </ c:if >
 9   < form  action ="<c:url value=" /j_spring_security_check" /> " method="post">
10        < table >
11            < tr >
12                < td >< label  for ="username" > username: </ label ></ td >
13                < td >< input  type ="text"  id ="username"  name ="j_username"
                    value
="<c:out value=" ${SPRING_SECURITY_LAST_USERNAME}" /> "/> </ td >

14            </ tr >
15            < tr >
16                < td >< label  for ="password" > password: </ label ></ td >
17                < td >< input  type ="password"  id ="password"  name ="j_password"  value ="" /></ td >
18            </ tr >
19            < tr >< td ></ td >
20                < td >< input  type ="checkbox"  name ="_spring_security_remember_me" > 两周内记住我 </ td >
21            </ tr >
22            < tr >< td  colspan ="2" >< input  type ="submit"  value ="提交" />
23            < input  type ="reset"  value ="重置" /></ td ></ tr >
24        </ table >
25   </ form >

如果你有看源代码,上面的某些参数,以及本文所有提及的东西你都不应该感到陌生。其它页面也不在列出了,还有就是如何让它运行起来,这些我相信你都能自己搞定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值