`
xyz20003
  • 浏览: 292725 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

请把acegi替换成Spring Security(内附视频)

阅读更多
在对web项目进行权限管理时,采用的方法无非是写一大堆JSP或者干脆一个Filter搞定。写完简单的权限功能后,又开始考虑如何自动记忆上次用户信息,限制每台机器只能有一个用户登录,把用户密码进行加密。接着更上一层楼,尝试实现单点登录,使用HTTPS保护传输数据,防御会话伪造攻击等等。

于是好几年前出现了名叫acegi的东西,它建立在spring的基础上,提供了可以丰盛的权限功能集合,同时也以极为变态的复杂配置给了我们这些初试权限的人闷头一棍。甚至网上已经有人流传“every time you use acegi, a fairy die”——每当有人使用acegi时,就会有一个精灵死去。

正因为如此,acegi在加入spring阵营时,不但改头换面改名成为Spring Security,而且在配置方面进行了极大的简化,形象的来说就是:“现在只需要20行的配置文件就可以完成之前几百行才能实现的功能”。

遗憾的是,现在依然可以看到还有人在使用acegi,甚至还有人在学习acegi,这种情况无疑让我们感到痛心疾首。

为了世界上不会再有精灵无谓牺牲,也为了大家的身心健康,我在此大声疾呼:“请把acegi替换成Spring Security。”尤其对那些希望学习acegi的同志,请直接学习Spring Security。

下面是《请把acegi替换成Spring Security》的附带视频,希望大家了解Spring Security的简洁。
http://code.google.com/p/family168/downloads/detail?name=springsecurity.zip
分享到:
评论
18 楼 wuzhihui001 2011-09-27  
网上找到了整理的文档  在这里把地址贴出,以方面后面看此博文的人
http://www.docin.com/p-104501208.html
《Spring Security安全权限管理手册》
17 楼 wuzhihui001 2011-09-27  
感谢楼主,正在学习中……
16 楼 熊笨笨 2010-05-12  
向高手学习了
15 楼 former 2010-03-24  
xyz20003 写道
Spring security 3里使用了很多Collection替换了原来的数组,null检验和操作都方便了很多。

但是要说3比2增强的最大地方,还是SpEl表达式,它为权限配置提供了更灵活的配置方案。至少把ACL那部分简化了很多(说到acl,又该有很多人来说acl垃圾了,这个暂且不提)

3里还额外提供了session management,把同步会话控制,会话失效检测都放到了一起,但是没感觉这部分改好了,和之前一样不好用。

3还提供了login success的handler,可是不支持链装,只能继承原来的handler,替代,所以还是不轻便。

目前不打算换到3,原因是3重新分包,把所有类的包名都改了,又要依赖spring3,现在就等着列级acl这个功能实现以后,再转换到3上去撒。

session management不知道是个什么东东,是检测应用中多人重复认证的session问题的吗?这个要去看一下。
换包也是个头疼的时,之前由于acegi的功能不是很完善,在其上做了很多的扩展,现在升级的话,这块的代码也得改,麻烦。
14 楼 kjj 2010-03-24  
按照楼主的逻辑,我曾经让无数的精灵死去,真是罪过啊,罪过!!
13 楼 xyz20003 2010-03-24  
Spring security 3里使用了很多Collection替换了原来的数组,null检验和操作都方便了很多。

但是要说3比2增强的最大地方,还是SpEl表达式,它为权限配置提供了更灵活的配置方案。至少把ACL那部分简化了很多(说到acl,又该有很多人来说acl垃圾了,这个暂且不提)

3里还额外提供了session management,把同步会话控制,会话失效检测都放到了一起,但是没感觉这部分改好了,和之前一样不好用。

3还提供了login success的handler,可是不支持链装,只能继承原来的handler,替代,所以还是不轻便。

目前不打算换到3,原因是3重新分包,把所有类的包名都改了,又要依赖spring3,现在就等着列级acl这个功能实现以后,再转换到3上去撒。
12 楼 Angel_Night 2010-03-24  
在单位没法看视频。

看这视频之前需要会acegi么?
11 楼 fansofjava 2010-03-24  
former 写道

这点的确有不爽的地方:
1.很多返回值用对象或对象数组,再处理的时候需要用到强类型转换。这么一说,acegi里面的权限对象也是这么玩的。不知道spring security是否可以解决。
2.曾经想将FilterInvocationDefinitionSource做远程调用(Hessian),由于其参数为Ojbect,无法实现,最后只能去重载FilterSecurityInterceptor中的invoke方法来实现了。
不知道这些地方spring security是否做了增强,保证了这些安全验证的方法有比较好的参数实现。


这个问题在2.0的时候没有解决,但在3.0上已经得到解决了,返回的时候采用Collection,所以类型就很好解决了。基本上Object[]都替换成了Collection,如返回ConfigAttributeDefinition,算是个比较垃圾的作法了,在3.0改成了Collection<ConfigAttribute>,总之,到3.0上,基本上解决了原来一些实现比较丑陋的地方。
10 楼 former 2010-03-24  
fansofjava 写道
JackAndroid 写道
fansofjava 写道
former 写道
fansofjava 写道
spring security2.0 其实只能说一般,有些地方甚至可以说比较丑陋,不过不久前3.0出来了,仔细看了一下,是要比2.0好一些,现在一定要用的话,建议直接3.0。

哪里比较丑陋(⊙o⊙)?
正在考虑是否要做acegi到spring security的迁移呢……

主要是原来版本是基于JDK1.4,很多地方实现起来不太优雅,搞到3。0用泛型,感觉好多了,自己的感受是写那个验证的自定义过滤器。

因为不能用泛型就丑陋了??那你JDK 5.0之前是怎么活过来的?

不要单从概念上来分析好不好,用过就知道,2.0有验证的时候是通过','相隔的方式传递字符串的,返回的时候用的是Object[],看起来很是不爽。

这点的确有不爽的地方:
1.很多返回值用对象或对象数组,再处理的时候需要用到强类型转换。这么一说,acegi里面的权限对象也是这么玩的。不知道spring security是否可以解决。
2.曾经想将FilterInvocationDefinitionSource做远程调用(Hessian),由于其参数为Ojbect,无法实现,最后只能去重载FilterSecurityInterceptor中的invoke方法来实现了。
不知道这些地方spring security是否做了增强,保证了这些安全验证的方法有比较好的参数实现。
9 楼 terrycong 2010-03-24  
JackAndroid 写道
fansofjava 写道
former 写道
fansofjava 写道
spring security2.0 其实只能说一般,有些地方甚至可以说比较丑陋,不过不久前3.0出来了,仔细看了一下,是要比2.0好一些,现在一定要用的话,建议直接3.0。

哪里比较丑陋(⊙o⊙)?
正在考虑是否要做acegi到spring security的迁移呢……

主要是原来版本是基于JDK1.4,很多地方实现起来不太优雅,搞到3。0用泛型,感觉好多了,自己的感受是写那个验证的自定义过滤器。

因为不能用泛型就丑陋了??那你JDK 5.0之前是怎么活过来的?

哈哈,楼上激进了。
的确之前2.0的时候好多使用数组,现在3.0用集合的话会方便很多,而且自定义过滤器也有所简化
8 楼 fansofjava 2010-03-24  
JackAndroid 写道
fansofjava 写道
former 写道
fansofjava 写道
spring security2.0 其实只能说一般,有些地方甚至可以说比较丑陋,不过不久前3.0出来了,仔细看了一下,是要比2.0好一些,现在一定要用的话,建议直接3.0。

哪里比较丑陋(⊙o⊙)?
正在考虑是否要做acegi到spring security的迁移呢……

主要是原来版本是基于JDK1.4,很多地方实现起来不太优雅,搞到3。0用泛型,感觉好多了,自己的感受是写那个验证的自定义过滤器。

因为不能用泛型就丑陋了??那你JDK 5.0之前是怎么活过来的?

不要单从概念上来分析好不好,用过就知道,2.0有验证的时候是通过','相隔的方式传递字符串的,返回的时候用的是Object[],看起来很是不爽。
7 楼 JackAndroid 2010-03-24  
fansofjava 写道
former 写道
fansofjava 写道
spring security2.0 其实只能说一般,有些地方甚至可以说比较丑陋,不过不久前3.0出来了,仔细看了一下,是要比2.0好一些,现在一定要用的话,建议直接3.0。

哪里比较丑陋(⊙o⊙)?
正在考虑是否要做acegi到spring security的迁移呢……

主要是原来版本是基于JDK1.4,很多地方实现起来不太优雅,搞到3。0用泛型,感觉好多了,自己的感受是写那个验证的自定义过滤器。

因为不能用泛型就丑陋了??那你JDK 5.0之前是怎么活过来的?
6 楼 fansofjava 2010-03-23  
former 写道
fansofjava 写道
spring security2.0 其实只能说一般,有些地方甚至可以说比较丑陋,不过不久前3.0出来了,仔细看了一下,是要比2.0好一些,现在一定要用的话,建议直接3.0。

哪里比较丑陋(⊙o⊙)?
正在考虑是否要做acegi到spring security的迁移呢……

主要是原来版本是基于JDK1.4,很多地方实现起来不太优雅,搞到3。0用泛型,感觉好多了,自己的感受是写那个验证的自定义过滤器。
5 楼 former 2010-03-23  
fansofjava 写道
spring security2.0 其实只能说一般,有些地方甚至可以说比较丑陋,不过不久前3.0出来了,仔细看了一下,是要比2.0好一些,现在一定要用的话,建议直接3.0。

哪里比较丑陋(⊙o⊙)?
正在考虑是否要做acegi到spring security的迁移呢……
4 楼 fansofjava 2010-03-23  
spring security2.0 其实只能说一般,有些地方甚至可以说比较丑陋,不过不久前3.0出来了,仔细看了一下,是要比2.0好一些,现在一定要用的话,建议直接3.0。
3 楼 bdifn 2010-03-23  
多点了几次又好了.不好意思!
2 楼 bdifn 2010-03-23  
链接无效啊?!
字数补足
1 楼 former 2010-03-22  
acegi一直在用,spring security虽然自己没用,但是搞cas的时候看到它在玩,感觉差不多,也是一堆filter+beans,这玩意儿原理都是一样的,也许加入了些技巧和扩展的tag和其他。
个人觉得初学者看哪个都差不多,原理懂了,也就一通百通了。
另外,如果真的再企业应用,例子里的那些配置还是不足,还是要自己定制一些beans+xml。

相关推荐

    springsecurity官方文档3.2

    - **历史**: 本章节简要回顾了 Spring Security 的发展历程,包括其前身 Acegi 安全框架的历史背景。 - **版本编号**: 明确了 Spring Security 版本的命名规则,例如 `3.2.0.M2` 中的 `.M2` 表示这是一个里程碑版本...

    spring-security-2.0.5

    此外,Spring Security的插件式架构使得添加新的安全功能或替换现有功能变得非常容易。例如,可以添加OAuth2支持以实现第三方登录功能。 **6. 文件名列表解析** 在压缩包`spring-security-2.0.5`中,包含的是Spring...

    Spring安全系统:Acegi Security--星月夜

    标题和描述均提及了“Spring安全系统:Acegi Security”,这是一种专为Spring Framework设计的安全解决方案,旨在提供强大的认证和授权功能。Acegi Security,后更名为Spring Security,是Spring生态系统中的重要...

    spring2.0 security

    Spring Security是Spring框架的一个子项目,原名为Acegi Security,旨在提供全面的安全管理解决方案,包括用户认证、权限控制、会话管理等。它通过AOP(面向切面编程)和过滤器链技术,实现了对Web应用的细粒度安全...

    Spring Security(Spring安全权限管理手册) PDF

    - **背景介绍**:Spring Security起源于一个名为Acegi的项目,并在2.0版本时正式成为Spring框架的一部分。其前身Acegi在权限管理方面已经享有盛誉,因此Spring Security在发布之初便受到了极大的关注。 - **优势分析...

    Acegi学习笔记--Acegi详解实战Acegi实例

    在2009年,Acegi被Spring Security所吸收,成为其前身,因此理解Acegi有助于我们深入理解Spring Security的安全机制。以下是对Acegi的详细介绍和实战应用实例。 一、Acegi的基本概念 1. **认证(Authentication)**...

    Spring Security

    Spring Security包含了一系列共享组件,这些组件被设计成可以在不同的环境中复用,以实现一致的安全策略执行。这些组件包括但不限于认证管理器、授权决策引擎等。 ##### 2.3 认证 认证是Spring Security中的关键...

    SSH集成Spring+hibernate+security 用户管理

    3. **Spring Security(原名Acegi Security)**:这是一个强大的安全框架,提供认证、授权等功能。在这个项目中,Spring Security负责用户的身份验证和权限控制。它可以根据用户的角色分配不同的访问权限,实现对...

    Acegi使用.pdf

    Acegi安全框架是专为Spring框架设计的安全解决方案,它通过深度集成Spring的特性,提供了一套全面、灵活的安全管理方案。不同于传统的安全框架,Acegi采用了面向切面编程(AOP)的方式来处理认证和授权问题,这使得...

    Spring-Security-3应用的11个步骤.docx

    它起源于2003年的Acegi Security,现在是Spring生态系统的组成部分,最新的版本是3.x。Spring Security 提供了一整套安全服务,包括用户验证、权限仲裁、会话管理等,适用于Web安全和方法安全。 **验证...

    最新ACEGI2.0教程

    Spring Security(曾用名Acegi Security System for Spring)为基于Spring框架构建的企业级应用提供强大而灵活的安全解决方案。该系统不仅支持认证与授权,还提供了诸如会话管理、加密等多种安全功能。 ##### 1.2 ...

    Spring Security的Web资源保护功能研究与扩展

    Spring Security是一个强大的开源安全框架,专门用于保护Web应用程序。它主要关注两个核心功能:认证和授权。认证涉及验证用户的身份,而授权则是决定已认证的用户可以访问哪些资源。 认证在Spring Security中通过...

    Acegi_使用.doc

    2. **AspectJ Join Point**:使用AspectJ来管理Domain Object实例的安全,特别适合那些不在Spring Bean容器管理范围内的对象。通过Acegi,可以对标准构造函数(如`new Person()`)进行安全控制。 3. **...

    acegi的详细配置实现

    **Acegi Security** 是一个为Spring框架设计的安全管理工具,它提供了丰富的安全服务,包括认证(Authentication)、授权(Authorization)以及会话管理(Session Management)等功能。在本章节中,我们将深入探讨Acegi的...

    acegi学习笔记

    **Acegi Security**,作为Spring Security的前身,是一个深度融入Spring Framework的安全框架,它为开发者提供了一套全面的安全解决方案,尤其在Web应用程序中展现出强大的灵活性与兼容性。Acegi通过Spring特有的...

    STRUTS+SPRING+HIBERNATE内部培训教程

    此外,通过集成Acegi(现为Spring Security)安全框架,可以提供用户认证和授权,增强系统安全性。 SSH的集成使用,让开发者能够专注于业务逻辑,而不必过于关心底层技术细节。它不仅提高了开发效率,还提升了系统...

Global site tag (gtag.js) - Google Analytics