如果你觉得自己写一个安全系统比较累,那建议你试一试Acegi这个开源框架,它与Spring能很好的结合,从多方面保护您的软件系统。
Acegi说穿了也就从两个方面保护资源:
一、是利用Servlet的过滤器,来拦截Servlet的请求
二、是利用Spring的AOP,(其实Servlet的过滤器也是AOP)
先来说说Servlet过滤,Acegi由认证管理器来确定用户身份,Acegi默认提供了一个认证管理器——ProvideManager,ProvideManager的authenticate()方法,认证一个Authentication对象,通过用户名(j_username)和密码(j_password)作为参数进行认证,如果验证通过,将用户名保存在session中。当然,你也可以自己写一个认证管理器来实现一些特殊的功能,不过,你需要实现org.acegisecurity.AuthenticationManager接口:
当然,你需要再Spring的配置文件中,将这个认证管理器加载进来:
xml 代码
<list></list>
-
- <bean id="authenticationManager"
- class="org.acegisecurity.providers.ProviderManager">
- <property name="providers">
- <list>
- <ref local="daoAuthenticationProvider" />
- <ref local="rememberMeAuthenticationProvider" />
- list>
- property>
- bean>
xml 代码
-
- <bean id="jdbcDaoImpl"
- class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl">
- <property name="dataSource" ref="dataSource" />
- <property name="usersByUsernameQuery">
- <value>
- SELECT manager_passport, manager_pwd, isuse FROM
- tb_mms_manager WHERE isuse = 1 and manager_passport = ?
- </value>
- </property>
- <property name="authoritiesByUsernameQuery">
- <value>
- SELECT manager_passport,op_code FROM tb_mms_manager m,
- tb_mms_op o, tb_mms_powergroup p WHERE m.power_group =
- p.group_id and p.group_op like '%|' +
- convert(varchar(2),o.op_id) + '|%' and
- m.manager_passport = ?
- </value>
- </property>
- </bean>
usersByUsernameQuery属性验证了用户名和密码,值得一提的是usersByUsernameQuery,必须是三个属性,用户名,密码,以及是否可用,除非你重写这个方法,不然三个属性缺一不可。authoritiesByUsernameQuery列举了该用户的所有权限,这里介绍的所有配置,基本上都是用Acegi默认的类来配置的,如果需要扩展功能,完全可以自己定义类来写。
中提供了一系列认证提供者,比较常用的认证提供者类型有:DaoAuthenticationProvider(从数据库中获取用户信息)、PasswordDaoAuthenticationProvider(让底层数据源完成)等,他们都是实现了AuthenticationProvider接口。该接口定义了与ProvideManager相同的authenticate()方法。
然后定义daoAuthenticationProvider
分享到:
相关推荐
acegi 框架 介绍 spring 安全
Acegi能做什么 Acegi的体系结构 Acegi核心组件 典型的web认证过程 Acegi的登陆认证 Acegi对安全对象的访问控制 Filter 组件 Acegi的不足之处
Acegi安全系统,是一个用于Spring Framework的安全框架,能够和目前流行的Web容器无缝集成。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全...
Acegi框架介绍.rar
Spring源代码解析(十):Spring_Acegi框架授权的实现.doc
Acegi安全框架简介及实用扩展,spring acegi 权限管理
使用Acegi作为基于Spring框架的WEB应用的安全框架 博文链接:https://allenj2ee.iteye.com/blog/129320
Spring源代码解析(九):Spring_Acegi框架鉴权的实现.doc
acegi安全框架例子--Acegi安全系统,是一个用于Spring Framework的安全框架,能够和目前流行的Web容器无缝集成。
一个使用Acegi身份认证框架的笔记 可以节省你的时间 方便快速学会使用
实战Acegi:使用Acegi作为基于Spring框架的WEB应
acegi,acegi,acegi
基于spring的Acegi安全框架认证与授权的分析及扩展.pdf
Acegi通过Spring AOP对容器中Bean的受控方法进行拦截,当用户的请求引发调用Bean的受控方法时,Acegi的方法拦截器开始工作,阻止未授权者的调用。
Acegi是一个专门为SpringFramework应用提供安全机制的开放源代码项目,全称为Acegi Security System for Spring,当前版本为 0.8.3。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和...
实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架.rar
ACEGI,用于spring的权限控制框架
好资料,大家一起分享,用户javaweb开发的权限和安全控制
1、一个Acegi的例子,可以运行 2、一个很好的学Acegi的网址,0基础学习Acegi,强烈推荐 3、有什么问题可以发邮件heroshen@126.com讨论