快速业务通道

使用SpringSide 3.1.4.3开发Web项目的全过程(下) - 编程入门网

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

使用SpringSide 3.1.4.3开发Web项目的全过程(下)

时间:2010-12-20 BlogJava 海边沫沫

第八步、使用Spring Security保护Web资源。在SpringSide 3项目中,已经 整合进了SpringSecurity,实现了符合RBAC规范的权限管理系统,并把数据保存 到了数据库中。我以前的博文SpringSide 3 中的安全框架中对SpringSecurity 有一个初步的探讨,我认为我写的东西对入门来说是很有帮助的,入门以后再深 入就简单了,在评论中我又补充了几点,其中就提到如果要把资源权限配置内容 放到数据库中,就要从objectDefinitionSource着手。事实上,在最新的 SpringSide 3版本中,就是通过定义一个databaseDefinitionSource来实现从数 据库中读取资源和权限之间的关系,而 databaseDefinitionSource引用 resourceDetailService,而该Service调用 personal.youxia.service.security.ResourceDetailServiceImpl。就是这样一 层套一层的关系,但是最终只需要用户实现 personal.youxia.service.security.ResourceDetailServiceImpl即可。在 SpringSide 3项目中,实现该Service的工作都可以省略,因为江南白衣已经做 好了。而我们要做的,就是在他提供的基础上进行扩展。

在项目中,已经定义好了users、roles、authorities和resource,如果需要 扩展其中任意一项,只需要向对应的数据表添加记录即可。预定义的role有“管 理员”和“用户”两种,我认为在该示例中已经没有增加角色的必要了,而 authorities是肯定要增加的,我想让只有“用户”能够添加文章,只有“管理 员”能够删除文章,所以在authorities表中增加如下两行:

insert into AUTHORITIES (NAME,DISPLAY_NAME) values (''A_ADD_ARTICLE'',''添加文章''); insert into AUTHORITIES (NAME,DISPLAY_NAME) values (''A_DELETE_ARTICLE'',''删除文章'');

建立authorities表和roles表的联系,用户可以添加文章,管理员当然也能 够添加文章,而只有管理员能够删除文章,所以在数据库中添加如下三行:

insert into ROLES_AUTHORITIES values(1,5); insert into ROLES_AUTHORITIES values(1,6); insert into ROLES_AUTHORITIES values(2,5);

再来看看需要保护的资源,它们应该分别为article.action、article! input.action、article!save.action、article!delete.action,其中只有后面 三个需要保护,因此在数据库中添加如下三行:

insert into RESOURCES (RESOURCE_TYPE,VALUE,ORDER_NUM)  values(''url'',''/article!input*'',7.0); insert into RESOURCES (RESOURCE_TYPE,VALUE,ORDER_NUM) values (''url'',''/article!save*'',8.0); insert into RESOURCES (RESOURCE_TYPE,VALUE,ORDER_NUM) values (''url'',''/article!delete*'',9.0);

最后,需要建立授权和资源之间的联系,如下:

insert into RESOURCES_AUTHORITIES values(5,7); insert into RESOURCES_AUTHORITIES values(5,8); insert into RESOURCES_AUTHORITIES values(6,9);

这时,再运行项目,会发现没有登录的用户只能察看文章,而点击增加文章 或删除文章的链接,就会跳到Login界面,或显示你没有访问该页面的权限。

对于项目中自带的用户、角色、授权和资源管理,我是这样的看法:最开始 接触SpringSide 3项目的时候,我觉得该功能是个鸡肋,甚至想过把这些功能删 除掉,弄一个干净的项目从头做;经过一段时间的思考后,我的观念变了,我觉 得这个功能非常有用,是一个很好的基础,而我们自己的功能,都可以从这里进 行扩展;这里的扩展,大部分都只需要在数据库中添加数行记录即可,正如上面 的演示,唯一不能达到要求的,可能是有的人

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号