快速业务通道

Acegi + Spring + Hibernate + Struts 2搭建基于角色的权限控制 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

Acegi + Spring + Hibernate + Struts 2搭建基于角色的权限控制

时间:2011-01-28 csdn博客 chenhongxin

安全永远是WEB应用系统必须面对的头等大事, 也是最头疼的事, 其实安全系统就只包括两个问题: 认证和授权.

以前做些网站系统, 安全检测逻辑都在放在须要安全控制的代码前面, 这样做有很多不好的地方, 重复多次的编码就不用说了, 代码移植性, 重用性都得不到体现, 安全检测逻辑要永远和业务逻辑放在一起.

那么, 能不能够在进入方法前就调用一些安全检测? 其实Spring AOP就是这个思想, 那么又如何实现安全检测呢? Spring Acegi Security 框架就是做这个事情.

本文主要是讨论下在已有的SSH系统中, 如何使用Acegi作为安全框架实现基于角色的权限控制(Role Based Access Control RBAC) , 本文主要是以Java 5注解的形式来配置安全框架, 大大减化配置和操作.

本文的主要参考资料: <Spring 2.0 核心技术与最佳实践> 第10章 (Spring Acegi 安全框架)

<精通Spring 2.X -- 企业应用开发详解> 第17章 (使用Acegi 实施应用系统安全)

acegi-security-1.0.6 官方文档

说明: 本文介绍的是RBAC, 在官方文档的基础上有所扩展或改动, 以更适合WEB应用系统. 其实我觉得大多数的网站基于角色已经足够了, 一般都没必要基于权限.

文章开始:

一. 下载所要的软件或JAR包:

我的相关配置是: Java 5, Tomcat 5.5.26, Struts 2.0.11, Spring 2.5.1, Hibernate 3.2, Acegi 1.0.6

二. 建立相关的数据库:

数据表: 用户信息表User: id, enable, user_name, user_pass, email_box

角色信息表RoleInfo: id, role_name, role_title, descp

用户与角色关联表(用户与角色是多对多关系)UserRole: user_id, user_name, role_id, role_name

并在这三个表中插入相关的数据, 我是定义了两种角色(role_name): ROLE_USER, ROLE_ADMIN

和三个用户, 一个用户角色为: ROLE_USER, ROLE_ADMIN

另一个用户角色为: ROLE_USER

第三个没有角色.

Acegi + Spring + Hibernate + Struts 2搭建基于角色的权限控制(2)

时间:2011-01-28 csdn博客 chenhongxin

二. 修改配置文件:

其实对Acegi框架的应用难点就在配置文件, 所以要特别注意了:

在 src 建立Acegi的配置文件: acegi-security.xml 当然这个文件的名称是可以任意的.

acegi-security.xml 说白了就是配置: 安全拦截器, 认证管理器, 决策管理器.

其内容如下:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- ========================= 认证管理器 ========================= --> <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager"> <property name="providers">    <list>     <ref bean="daoAuthenticationProvider" />     <ref bean="rememberMeAuthenticationProvider" />    </list> </property> </bean> <!-- 基于DAO验证的AuthenticationProvider --> <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"> <property name="userDetailsService" ref="userDetailsService&q

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号