spring acegi 权限设计

一般在一个应用系统中都会有权限的设计,最基本的权限设计会关系到五张表,用户表,角色表,权限表用户和角色的中间表,角色和权限的中间表,这样五张表,在负责一些的权限设计还会进行分组,将资源放入表中,并建立权限和资源的中间关系表,

https://p-blog.csdn.net/images/p_blog_csdn_net/cailiang517502214/EntryImages/20090923/59833db1tc7a7e10c3d18&690副本.jpg


spring acegi 是spring框架中最为优秀的框架之一,今天讲的是关于spring acegi的权限配置,其中会采用jcaptcha的验证码服务 整个项目 采用struts2.16(注解) hibernate3.12(注解) spring2.5(注解) spring acegi 2.05的版本.
整个项目的结构如图:

要在项目中使用spring acegi需要在web.xml中引入 acegi
<!-- SpringSecurity filter--> <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class> org.springframework.web.filter.DelegatingFilterProxy </filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
(struts2 和hibernate的引入就不说了,关于验证码 在后面下载的例子中会有详细的配置)
在引入acegi后,最主要的就是关于applicationContext-serurity.xml文件的配置了,
<!-- http安全配置 --> <http auto-config='true' access-decision-manager-ref="accessDecisionManager"> <intercept-url pattern="/user/*" access="A_Normal,A_Member,A_Administrator" /> <form-login login-page="/login.jsp" default-target-url="/user/users" authentication-failure-url="/login.jsp?error=1" /> </http>
intercept-url 是表示受保护的资源,access是指那些角色具有访问权限,由于acegi的默认权限是一ROLE_开头的,所以通过access-decision-manager-ref="accessDecisionManager" 这个bean标签可以修改成你所需要的前缀,并不局限于acegi,form-login 配置系统的登录页面,default-target-url是指登录成功后返回的页面,authentication-failure-url是指认证失败后的页面,
acegi的认证模式有好几种,比如数据库的认证模式(常用模式),cas认证等等,
<authentication-provider user-service-ref="myUserDetailServices >
</authentication-provider >
这种模式 是基于数据库的认证模式 myUserDetailServices 是自己定义的一个spring bean
<beans:bean id="myUserDetailServices" class="com.happy.services.LoginValidate"></beans:bean>

这是我们自己写的一个类,但是这个类有些特殊,这个类必须实现 UserDetailsService接口实现loadUserByUsername方法并 返回UserDetails
当然在测试的时候 我们可以把用户名和这些直接写在配置文件中
<authentication-provider > <!-- user-service-ref="myUserDetailServices" --> <user-service> <user name="normal" password="normal" authorities="A_Normal" /> <user name="user" password="user" authorities="A_Normal,A_Member" /> <user name="admin" password="admin" authorities="A_Normal,A_Member,A_Administrator" /> </user-service> </authentication-provider>
去掉基于数据库的认证模式. 这样就完成了acegi的配置,当具有权限的人才有权访问指定的页面,acegi还有一系列的标签,用来在页面上控制内容的展示,


<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags"%>(导入标签)
比如说 <security:authorize ifAnyGranted="A_Administrator">删除</security:authorize> 当用户具有A_Administrator的权限时 才会显示 删除菜单,这就是一个简单的基于acegi权限的配置


资源的下载地址:
http://download.csdn.net/source/1620226 带验证码(基于配置文件的验证)
http://download.csdn.net/source/1606935 不带验证码 (基于数据库的验证)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值