最近在研究使用Spring Security来实现我们的权限管理。在SpringSide-1.0中就通过Acegi(Spring Security前身)实现了这么一套系统,所以就回顾一下SpringSide-1.0,研究一下他们的实现方式和界面设计。
SpringSide-1.0可以从\\172.16.30.1\ItShare\第三方应用\springside 目录下找到(springside-1.0-M3-with-dependencies.zip)。
但是,之前能够运行良好的系统,现在却运行出错。通过一番研究,发现原来是存在版本冲突。现将解决办法列出如下。
解决运行出错问题
将springside-1.0-M3-with-dependencies.zip解压到本地目录(如D:\java\springside- 1.0-M3-with-dependencies,后面将以%SPRINGSIDE_HOME%引用),修改文 件%SPRINGSIDE_HOME%/lib/core/pom.xml,排除掉有冲突的Spring依赖(修改文件中对acegi-security 的依赖,排除Spring依赖):
<!--Acegi begin-->
<!--acegi security 安全方案-->
<dependency>
<groupId>org.acegisecurity</groupId>
<artifactId>acegi-security</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-remoting</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-support</artifactId>
</exclusion>
</exclusions>
</dependency>
将项目导入到eclipse中
- 首先,拷贝%SPRINGSIDE_HOME%/misc/ides/eclipse目录下的.project文件和.classpath文件到%SPRINGSIDE_HOME%下
- 修改%SPRINGSIDE_HOME%目录下的.classpath文件,将
<classpathentry kind="lib" path="lib/core/poi-2.5.1-20040804.jar"/>
修改为
<classpathentry kind="lib" path="lib/core/poi-2.5.1-final-20040804.jar"/>
将
<classpathentry kind="lib" path="lib/xfire/stax-utils-snapshot-20040917.jar"/>
修改为
<classpathentry kind="lib" path="lib/xfire/stax-utils-20040917.jar"/>
修改acegi配置,允许多处使用同一帐号登录
修改文件%SPRINGSIDE_HOME%/springside-bookstore/src/org/springside/bookstore/plugins/security/applicationContext-security-acegi.xml
<!-- 可以阻止某个用户名在已经成功登录进web应用的同时再进行一次成功的登录 -->
<bean id="concurrentSessionController" class="org.acegisecurity.concurrent.ConcurrentSessionControllerImpl">
<property name="maximumSessions">
<value>10</value>
</property>
<property name="sessionRegistry">
<ref local="sessionRegistry"/>
</property>
<property name="exceptionIfMaximumExceeded" value="true"/>
</bean>