`
lion222
  • 浏览: 122177 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

java Spring Security 总结一 8

阅读更多

   身份验证只是Spring Security安全机制的第一步,访问决策管理器验证用户是否有权限访问相应的资源(filterSecurityInterceptor中objectDefinitionSource属性定义的访问URL需要的属性信息)。

    org.springframework.security.AccessDecisionManager接口定义了用于验证用户是否有权限访问受保护资源的decide方法,另一个supports方法根据受保护资源的配置属性(即访问这些资源所需的权限)来判断该访问决策管理器是否能做出针对该资源的访问决策。decide方法最终决定用户有无访问权限,如果没有则抛出AccessDeniedException异常(面前也提到过,你应该在回过头去看看)。

    与认证管理器类似,访问决策管理器也不是由自己来实现访问控制的,而是通过一组投票者来投票决定(通过调用投票者的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配置如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1 <bean id="loggerListener" class="org.springframework.security.event.authentication.LoggerListener"/>

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

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

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> 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>

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

    附件1:linux/springsecurity.rar">springsecurity.rar(不包括JAR包)

    补上使用命名空间配置实现的代码,命名空间的详细资料请参考Spring Security中文参考文档,翻译得很好,这里就不在累述了,配置文件中也有比较详细的注释。另外例子中还包括了自定义 UserDetailService的实现已经如何Ehcache缓存用户信息,详细的信息将在下一篇中讲述。

    附件2:linux/springsecurity-namespace.rar">springsecurity-namespace.rar(包括部分JAR包)

分享到:
评论

相关推荐

    SpringSecurity项目

    springsecurity是一个专注于为Java应用程序提供身份验证和授权的框架。与所有Spring项目一样,Spring安全性的真正威力在于它可以很容易地扩展以满足定制需求。 spring security 的核心功能主要包括: 认证 (你是...

    基于Java Spring Security的关注微信公众号即登录的设计与实现源码.zip

    基于Java Spring Security的关注微信公众号即登录的设计与实现源码.zip基于Java Spring Security的关注微信公众号即登录的设计与实现源码.zip基于Java Spring Security的关注微信公众号即登录的设计与实现源码.zip ...

    SpringSecurity.zip

    ​ Spring Security:spring家族一员。是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转...

    java学习之SpringSecurity配置了登录链接无权限

    我们在使用SpringSecurity作为后台权限框架的时候,框架给我们提供了配置登录请求的接口,供我们配置登录链接,当我们配置了登录链接地址后,前端访问登陆请求的时候显示无权限。 异常分析 由于SpringSecurity的...

    springsecurity学习笔记

    三更springsecurity学习笔记

    spring security3.0所需要的最精简的jar包

    早一段时间学习了springsecurity3.0 框架,在开始阶段不知道导入那些必需jar包,经过摸索,总结出来最精简的jar包

    SpringSecurity课程文档下载 pdf 教学

    SpringSecurity课程文档下载 pdf 教学

    Spring Security OAuth2.0学习笔记.zip

    Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...

    spring security 4.0.0所需jar包

    使用springsecurity做权限管理时,必须要有的jar,当然有些可以不用,你可以按需加入你的项目 @最美最好的你 vx: dengqun2011

    Spring Security权限管理开发手册

    Spring Security 3 Spring Security权限管理开发手册 详细介绍了web app中如何一步步加入 spring security 框架支持,配置灵活,功能强大 中文教程及例子-Spring Security 3 Spring Security rights management ...

    spring_security_3.1

    和spring集成使用的完美权限框架,学习java一定要学会spring_security

    spring-security-oauth2-2.3.5.RELEASE-API文档-中文版.zip

    标签:spring、security、springframework、oauth2、oauth、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代

    Spring Security 把授权信息写入数据库

    Spring Security 把授权信息写入数据库

    一个比较好的spring security实例

    一个比较好的spring security实例

    spring-security-crypto-5.5.2-API文档-中文版.zip

    标签:springframework、security、spring、crypto、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释...

    基于springBoot+springSecurity+jwt实现前后端分离用户权限认证

    springSecurity也有很多种权限认证方式,本项目主要实现基于接口授权,也就是说通过注解给controller赋予权限,用户只有拥有某个接口的权限才能成功访问这个接口,从而实现不同用户拥有不同访问权限;

    spring-security-core-5.5.2-API文档-中文版.zip

    标签:springframework、security、spring、core、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和...

    Spring Security3 安全 个人总结

    Spring Security3 拦截 过滤器 安全,框架原理入门

    安全框架Spring Security深入浅出视频教程

    视频详细讲解,需要的小伙伴自行网盘下载,链接见附件,永久有效。 首先,SSM环境中我们通过xml配置的...Springsecurity在两种不同的开发模式中使用,有经典的独立web后台管理系统,也有时下最流行的前后端分离场景。

    Spring Security

    Spring Security是什么? 历史 发布版本号 Getting Spring Security Spring Security 4.1新特性 Java 配置提升 Web应用程序安全性提升 授权改进 密码模块的改进 测试的改进 一般的改进 样品和指南 (Start Here) Java ...

Global site tag (gtag.js) - Google Analytics