簡體   English   中英

將用戶添加到spring 3安全性

[英]Adding users to spring 3 security

我正在考慮通過spring 3安全性實現用戶的授權。 我知道用戶名和密碼存儲在某個XML文件中,如下所示:

<authentication-manager>
  <authentication-provider>
    <user-service>
       <user name="username" password="123456" authorities="ROLE_USER" />
    </user-service>
  </authentication-provider>
</authentication-manager>

但我想知道,如何添加用戶或更改密碼? 有人能告訴我嗎?

user-service元素創建一個InMemoryUserDetailsManager ,它具有修改用戶和更改密碼的方法。

但是,在XML中定義用戶實際上僅用於測試。 如果您希望能夠添加和更新用戶信息,則應使用數據庫。 參考手冊中介紹了標准的Spring Security數據庫模式。

然后,您可以使用JDBC UserDetailsManager實現 ,也可以構建自己的自定義數據管理代碼。

同意盧克。 在XML中存儲用戶名和密碼不是一個好習慣。 將用戶詳細信息存儲在數據庫中,以便添加修改它們。

創建數據庫

CREATE TABLE IF NOT EXISTS users (
     username VARCHAR(10) NOT NULL,  
     password VARCHAR(32) NOT NULL,
     enabled BOOLEAN NOT NULL,
     PRIMARY KEY (username)  
);  

CREATE TABLE IF NOT EXISTS authorities (  
     username VARCHAR(10) NOT NULL,  
     authority VARCHAR(10) NOT NULL,  
     FOREIGN KEY (username) REFERENCES users(username)
); 

insert into users(username,password,enabled) values ('abc','123456',TRUE);   
insert into authorities(username,AUTHORITY) values ('abc', 'ROLE_USER');

這里的表名,根據Spring Security默認查詢使用列名('選擇用戶名,密碼,從用戶名=?'的用戶啟用)。 因為當我們使用默認名稱時,我們不需要顯式指定查詢來獲取用戶詳細信息。 查看Spring Security文檔以獲取更多詳細信息。

數據源

您需要具有如下定義的數據源bean,因為Spring安全性需要連接數據庫以獲取用戶詳細信息,因此您需要告訴它哪個驅動程序,數據庫URL,用戶名和密碼。 例如如下。

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.hsqldb.jdbc.JDBCDriver" />
    <property name="url" value="jdbc:hsqldb:hsql://localhost/elab" />
    <property name="username" value="sa" />
    <property name="password" value="" />
</bean>

Spring安全配置

現在我們需要告訴用戶數據庫的spring安全性以獲取登錄詳細信息。 因此,我們使用'jdbc-user-service'而不是內存UserDetailsS​​ervice 的用戶服務 現在我們的身份驗證管理器將如下所示。

<authentication-manager>
    <authentication-provider>
        <jdbc-user-service data-source-ref="dataSource"/>
    </authentication-provider>
</authentication-manager>

請注意,如果用戶表結構與Spring在默認情況下的預期不同,則應將查詢顯式指定為jdbc-user-service元素的屬性(users-by-username-query)。 有關更多信息,請參閱文檔。

現在所有set和Spring都會很樂意從數據庫中獲取用戶詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM