最近在研究使用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>