天天看點

回顧springside-1.0-M3

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

  1. 首先,拷貝%SPRINGSIDE_HOME%/misc/ides/eclipse目錄下的.project檔案和.classpath檔案到%SPRINGSIDE_HOME%下
  2. 修改%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> 
           

繼續閱讀