欢迎来到天天文库
浏览记录
ID:9587678
大小:60.00 KB
页数:5页
时间:2018-05-03
《实现基于spring框架应用的权限控制系统》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实现基于Spring框架应用的权限控制系统服务时,OOP就无能为力了,只能在所有相关类中加入类似的系统服务级的代码。AOP为解决系统级服务问题提供了一种很好的方法。AOP将系统服务分解成方面看待,并为类提供一种声明式系统服务方式。Java类不需要知道日志服务的存在也不需要考虑相关的代码。所以,用AOP编写的应用程序是松耦合的,代码的复用性就提高了。 2、Acegi安全框架 借助于Spring框架,开发者能够快速构建结构良好的anager、实现用户授权的AccessDecisionManager以及
2、实现角色转换的RunAsManager。安全管理对象、拦截器以及安全控制管理组件三者关系如图1所示。 Acegi安全框架在基于Spring框架的系统中的应用 1、分析系统安全性需求 首先,需要明确进行安全控制的对象,可为业务方法和URL资源。 其次,需要进一步明确,系统身份认证资料和资源授权信息的数据持久化形式。 2、Acegi安全系统数据库设计 在Acegi框架中支持多种安全信息的持久化方式,可以在配置文件中配置或存放在关系数据库。由于在实际应用中,需求是经常发生变化的。所以,在配置文件
3、中配置是满足不了实际应用需求的。然而,Acegi本身对权限表的设计非常简单,users表{username,passe,authority},这样简单的设计肯定无法适用复杂的权限需求。为了解决权限管理的复杂性,在这里引入了role(角色)的概念,使得用户和权限分离,一个用户拥有多个角色,一个角色拥有多个相应的权限,这样就更灵活地支持安全策略。 同时,为了更好地配合Acegi安全框架,还引入resource(资源)的概念,资源可分为URL和FUNCTION(方法)两种,一个权限可以对应多个资源。具体的
4、数据库设计见图2。图1安全管理对象,拦截器和安全管理组件交互图图2Acegi安全控制系统数据库设计3、认证管理器,授权管理器的配置 实现系统的安全控制,首先需要对系统的安全管理器和授权管理器进行配置,系统进行认证和授权需要获取安全信息,Acegi本身提供了对认证信息的获取机制,在实现认证与授权过程中,系统将主动根据配制信息和相应的信息解释安全信息的读取。图3给出了一个将用户安全信息存储在数据库中的认证管理器的配置示意图。 对应于图示的XML配置文件的代码如下:/*配置数据库datasource和A
5、cegi的jdbcDao*/<beanid=”dataSource”class=”org.springframee=”driverClassName”> <value>${jdbc.driverClassName}</value> </property> <propertyname=”url”> <value>${jdbc.url}</value> </property>图3认证管理器配制示意图<propertyname=”username”> <value>${jdbc.username}</v
6、alue></property><propertyname=”passpl”class=”org.acegisecurity.roviders.dao.jdbc.JdbcDaoImpl”> <propertyname=”dataSource”> <refbean=”dataSource”/> </property></bean>/*配置用户信息的加密算法*/<beanid=”passe=”authenticationDao”> <reflocal=”JdbcDaoImpl”/> </propert
7、y> <propertyname=”passe=”userCache”> <reflocal=”userCache”/> </property></bean>/*配置认证管理器*/<beanid=”authenticationManager”class=”org.acegisecurity.providers.ProviderManager”> <propertyname=”providers”> <list> <reflocal=”daoAuthenticationProvider”/>
8、</list> </property></bean> 授权管理器的配置方法与认证管理器的配置基本类似,这里不再讨论。4、安全请求拦截器的配置 以上配置完成后,就需要配置安全拦截器。不同的安全管理对象需要使用不同的安全拦截器。对于方法级的安全认证需要使用的拦截器为MethodSecurityInterceptor,而应用于URL资源的安全拦截器为FilterSecurityInterceptor。其中,MethodSecurityInterceptor
此文档下载收益归作者所有