与认证管理器类似,访问决策管理器也不是由自己来实现访问控制的,而是通过一组投票者
来投票决定(通过调用投票者
的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
>
如果你有看源代码,上面的某些参数,以及本文所有提及的东西你都不应该感到陌生。其它页面也不在列出了,还有就是如何让它运行起来,这些我相信你都能自己搞定。
分享到:
相关推荐
在“Spring Security学习总结2_2”中,我们可能涉及了对Spring Security更深入的探讨,特别是关于其核心概念和实际应用的细节。 首先,Spring Security的核心组件包括Security Context(安全上下文)、...
1. **Filter Security Interceptor**:这是SpringSecurity的主要过滤器,负责检查请求并决定是否允许访问。它会根据预定义的访问控制规则进行判断。 2. **Authentication Manager**:处理用户认证的组件,可以使用...
【Spring Security 学习总结】 Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护基于 Java 的应用程序。本学习总结文档主要针对初学者,旨在剖析一个不安全的应用程序并阐述如何通过 ...
SpringSecurity学习总结一.pdf
在"Spring Security学习总结一(补命名空间配置)"的文件中,可能涵盖了如何在Spring Security的XML配置中补充命名空间的步骤。命名空间的引入是为了简化配置,例如`<http>`元素用于配置安全拦截和访问规则,`...
总结,Spring Security 3的源码分析是一个深度学习的过程,涵盖了安全领域的多个方面。通过理解其内部工作机制,开发者可以更好地利用这一强大的框架,为应用程序提供安全的保障。同时,源码分析也能帮助开发者解决...
总结来说,"REST-spring-security"项目展示了如何使用Spring Security来保护RESTful Web服务,包括身份验证、授权、访问控制和安全配置。这个项目可以帮助开发者理解如何在实际应用中实现安全的REST API,确保服务的...
### Spring Security 学习总结 #### 一、Spring Security 概述 Spring Security 是一个功能强大的安全框架,它为基于 Java 的应用程序提供了认证(authentication)和授权(authorization)功能。在 Spring ...
《Spring Security 3.1 学习指南及资源解析》 Spring Security是Java平台上的一款强大且高度可定制的安全框架,广泛应用于企业级Web应用的安全管理。本篇文章将围绕"Spring Security 3.1"这一主题,深入探讨其核心...
### Spring Security3中文教程知识点概览 #### 一、安全核心概念与起步 Spring Security是Spring框架中的一个重要组成部分,主要用于为Web应用提供安全防护。它不仅提供了强大的认证和授权功能,还支持各种加密...
在"SpringSecurity2Demo"这个项目中,我们可以预期看到以下组成部分: 1. **配置文件**: `spring-security.xml`,这是Spring Security的核心配置文件,包含了过滤器链的配置、用户认证源、授权规则等。 2. **控制...
### Spring Security 概述与应用实践 #### 一、引言 在当今互联网时代,网络安全问题日益凸显,尤其是Web应用程序的...同时,结合实际案例的学习,能够帮助我们更好地理解和掌握Spring Security的核心概念与使用技巧。
对于初学者,建议从官方文档或教程开始学习,逐步熟悉Spring Security的安装、配置和使用流程。 #### Security命名空间配置 Spring Security通过XML命名空间简化了安全相关的配置。这部分文档详细介绍了如何使用...
Spring Security3中文文档全面而深入地覆盖了Spring Security3的各个方面,从基础知识到高级特性,从理论到实践,都是开发者学习和应用Spring Security3不可或缺的资源。通过阅读和理解这些文档,开发者可以更好地...