spring security的原理及教程

spring security使用分类:

如何使用spring security,相信百度过的都知道,总共有四种用法,从简到深为:1、不用数据库,全部数据写在配置文件,这个也是官方文档里面的demo;2、使用数据库,根据spring security默认实现代码设计数据库,也就是说数据库已经固定了,这种方法不灵活,而且那个数据库设计得很简陋,实用性差;3、spring security和Acegi不同,它不能修改默认filter了,但支持插入filter,所以根据这个,我们可以插入自己的filter来灵活使用;4、暴力手段,修改源码,前面说的修改默认filter只是修改配置文件以替换filter而已,这种是直接改了里面的源码,但是这种不符合OO设计原则,而且不实际,不可用。

本文面向读者:

因为本文准备介绍第三种方法,所以面向的读者是已经具备了spring security基础知识的。不过不要紧,读者可以先看一下这个教程,看完应该可以使用第二种方法开发了。

spring security的简单原理:

使用众多的拦截器对url拦截,以此来管理权限。但是这么多拦截器,笔者不可能对其一一来讲,主要讲里面核心流程的两个。 首先,权限管理离不开登陆验证的,所以登陆验证拦截器AuthenticationProcessingFilter要讲; 还有就是对访问的资源管理吧,所以资源管理拦截器AbstractSecurityInterceptor要讲; 但拦截器里面的实现需要一些组件来实现,所以就有了AuthenticationManager、accessDecisionManager等组件来支撑。 现在先大概过一遍整个流程,用户登陆,会被AuthenticationProcessingFilter拦截,调用AuthenticationManager的实现,而且AuthenticationManager会调用ProviderManager来获取用户验证信息(不同的Provider调用的服务不同,因为这些信息可以是在数据库上,可以是在LDAP服务器上,可以是xml配置文件上等),如果验证通过后会将用户的权限信息封装一个User放到spring的全局缓存SecurityContextHolder中,以备后面访问资源时使用。 访问资源(即授权管理),访问url时,会通过AbstractSecurityInterceptor拦截器拦截,其中会调用FilterInvocationSecurityMetadataSource的方法来获取被拦截url所需的全部权限,在调用授权管理器AccessDecisionManager,这个授权管理器会通过spring的全局缓存SecurityContextHolder获取用户的权限信息,还会获取被拦截的url和被拦截url所需的全部权限,然后根据所配的策略(有:一票决定,一票否定,少数服从多数等),如果权限足够,则返回,权限不够则报错并调用权限不足页面。 虽然讲得好像好复杂,读者们可能有点晕,不过不打紧,真正通过代码的讲解在后面,读者可以看完后面的代码实现,再返回看这个简单的原理,可能会有不错的收获。

spring security使用实现(基于spring security3.1.4):

javaEE的入口:web.xml:

contextConfigLocation classpath:securityConfig.xml springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* org.springframework.web.context.ContextLoaderListener index.jsp

上面那个配置不用多说了吧 直接上spring security的配置文件securityConfig.xml:


index.jsp:

My JSP 'index.jsp' starting page
这是首页

欢迎 !
进入admin页面 进入其它页面

http://blog.csdn.net/u012367513/article/details/admin.jsp:

My JSP 'http://blog.csdn.net/u012367513/article/details/admin.jsp' starting page 欢迎来到管理员页面.


accessDenied.jsp:

My JSP 'http://blog.csdn.net/u012367513/article/details/admin.jsp' starting page 欢迎来到管理员页面.


http://blog.csdn.net/u012367513/article/details/other.jsp:

"> My JSP 'http://blog.csdn.net/u012367513/article/details/other.jsp' starting page
这里是Other页面

项目图:
spring security的原理及教程
源码和jar包都在这个教程里面,为什么不直接给?笔者的目的是让读者跟着教程敲一遍代码,使印象深刻(相信做这行的都知道,同样一段代码,看过和敲过的区别是多么的大),所以不惜如此来强迫大家了。 由于笔者有经常上csdn博客的习惯,所以读者有什么不懂的(或者指教的),笔者尽力解答。
转载请标注本文链接:http://blog.csdn.net/u012367513/article/details/38866465

点击复制链接 与好友分享!回本站首页


您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力
上一篇:struts2自定义类型转换器
下一篇:Spring使用注解执行定时任务
相关文章

Struts的概念及体系结构与工作原理

Taglib原理和实现:再论El和JSTL标签

JSP页面翻译原理

Java编程思想读书笔记-3(第9章-1容器

Java编程思想读书笔记-4(第9章-2Has

Java的沙箱机制原理入门

理解Java类加载原理

J-Hi对struts2与webwork的无配置文件的

java线程等待原理

JVM原理_内存篇

图文推荐

spring security的原理及教程
适配器模式
spring security的原理及教程
Handler的介绍和使用
spring security的原理及教程
struts2上传文件
spring security的原理及教程
通过JFreeChart的饼状
分类:默认分类 时间:2015-03-05 人气:1
本文关键词:
分享到:

相关文章

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.085 (s). 10 q(s)