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

第八步、使用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项目的时候,我觉得该功能是个鸡肋,甚至想过把这些功能删 除掉,弄一个干净的项目从头做;经过一段时间的思考后,我的观念变了,我觉 得这个功能非常有用,是一个很好的基础,而我们自己的功能,都可以从这里进 行扩展;这里的扩展,大部分都只需要在数据库中添加数行记录即可,正如上面 的演示,唯一不能达到要求的,可能是有的人觉得users表字段太少,而实际项 目中我们要记录用户的信息远远不止这么少,其实这个问题也好解决,只需要创 建一个 user_details表即可,或者叫user_profiles,再按照之前的步骤创建针 对user_details表的增删查改功能;总之,尽量不要去更改江南白衣已经实现了 的数据库结构和程序代码。

SpringSecurity针对资源的保护,不仅仅是只能在数据库中配置,其实 SpringSecurity更提供了一些有用的标签,可以在视图文件中灵活使用。具体内 容,大家请参考SpringSecurity文档。

第九步、将项目迁移到多数据库环境。其实只要了解前面的八步,简单的项 目就可以搞定了,但是对于致力于高并发高负载的分布式应用,则离不开多数据 源和分布式事务管理,Web Service和AJAX的跨域访问也是做分布式应用的有力 武器。在我前面的博文中,我已经探讨过了多数据源配置的各种问题:

SpringSide 3 中的多数据源配置的问题

在SpringSide 3 中使用多个数据库的方法

在这里,我选择了第三种方法,就是在Spring中整合Atomikos。下载 Atomikos 3.5.5版,把如下transactions-essentials-alljar文件和 jta.properties文件拷入到项目的WEB-INF/lib目录下。

创建第二个数据库,名称为MultiDatasourceExampleIndex,其中包含一个 Article表,如下:

开发Web项目的全过程(下)-">

时间: 2024-12-22 02:57:21

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

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

SpringSide 3.1.4.3是目前SpringSide的最新版本,也是完成度比较高的一 个版本,用来做实际项目的开发应该丝毫不成问题.这里写一下使用该版本开发 一个简单Web项目的全过程,当然,最重要的是我自己的一些心得体会.我的文 章很长,只有耐下性子细看,才能体会个中三味. 第一步.下载SpringSide 3.1.4.3 all-in-one版.这个过程太简单了, SpringSide的官方网站是www.springside.org.cn,去那里就可以下载了,all- in-one

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

第七步.编写Action和JSP.在SpringSide 3.1.4.3中,使用的是Struts 2及 其Convention插件,已经不是前面使用的CodeBehind插件了,关于Convention插 件,这里要再说几句,该插件的大部分功能和 CodeBehind相同,唯一让人有点 迷惑的就是该插件到哪里寻找Action类的问题,它会根据 struts.convention.package.locators属性的值来决定,在该项目中,其值为" web",之需要查阅一下 struts

开发Web项目,应该下那个开发包

问题描述 想上官网下个最新的JDK,结果发现JDK已经被划分成了多个版本.请教各位高手,开发Web项目应该下载哪个,这几个版本功能上有什么区别JavaSE JDK 6JavaEE 6 SDKJavaEE 6 SDK with JDK6只安装JDK6的话,能开发WEB项目吗?在网上看见有人说只要安装Tomcat就包含javaee了,是什么意思?只安装JavaEE6 SDK,没有JDK的话,能正常开发JAVA项目吗? 解决方案 JAVASDK就是JDK,JDK是整个Java的核心,包括了Java运行

在eclipse中开发web项目学生作业管理系统需要学习哪些方面的东西

问题描述 在eclipse中开发web项目学生作业管理系统需要学习哪些方面的东西 在校大学生党,想开发一个基于web的学生作业管理系统,在eclipse中编程,,除了eclipse的用法,我不知道还要学习哪些东西,求大神给建议,还有,数据库最好用什么呢,我的电脑之前卸载sql server有残留,所以sql server好像装不了了 解决方案 java web,Servlet,开发工具使用MyEclipse要好点,使用Eclipse的话还需要j2ee的一些插件.数据库建议学习使用mysql,简单

使用IDEA社区版开发Web项目

IDEA + Maven + Jetty来开发Web项目,主要演示下如何调试代码. 1. 首先我们来创建一个Maven项目,项目类型选择"Maven Module",输入项目名称"demo". 2. 选择项目使用的Archetype为"maven-archetype-webapp",这里也可以随便修改下GroupId等信息. 3. 这一步直接点击"Finish". 4. 打开Maven的配置文件pom.xml,在build节点

新手求指导python flask开发web项目经验

问题描述 新手求指导python flask开发web项目经验 大一快结束 参与一个正式的项目,运用python flask框架进行web开发.以前学过c,c++,会写代码.但是学完python,入门了flask框架后,也会写代码,不明白如何在项目里写代码,是我没理解到python的内涵么,还是其他什么原因(求推荐一些开源web开发项目代码学习一下) 解决方案 flask官方文档就带了例子, 基本上就是注册一个route,然后实现自己的函数. 解决方案二: Python 入门,web 开发还是

b/s-javafx 开发web项目 B/S

问题描述 javafx 开发web项目 B/S 请问使用javafx如何开发BS结构的web项目.本人能够简单的使用webview等对象在本地开发CS结构的例子.但是项目要求是 类似于javaee的BS结构的web.求大神给一个简单的demo或者开发方法,本人使用的是myeclipse.在线等

asp.net开发web项目-vss集成环境配置

asp.net|web|项目   首先,vss必须要6.0c以上版本才能在.net环境中使用, 在.net2003安装盘中有6.0d版,6张盘的版本中没有. vss的安装 服务器端: 找到安装文件,运行setup程序,一路next,超简单,不用解释了吧. 客户端: 在服务器上找到vss的安装目录,其中有个vss子目录,里面包含有netsetup.exe, 把vss目录共享出来,记住一定要共享vss目录,如果共享上级目录,是无法网络安装的, 然后在客户机上打开服务器上的vss共享目录,运行nets

visual studio 2013开发web项目打开网页时出错

问题描述 可以在任务栏看到IISexpress图标,我用的是win7,iisexpress8.0上网查原因,于是他们说要打开控制面板中打开和关闭windows功能中的iis服务打开控制面板,然后发现打开和关闭windows功能一片空白用了注册表的方法等都没用我的windows系统却无法更新也无法安装windowsupdate独立安装包好像什么都不行我真的不知道怎么办了,反正现在我无法开发任asp.net程序了 解决方案 解决方案二:你的系统是属于"阉割版"的,还是安装一个靠谱的&quo