2011-11-08 33 views
2

我想爲我的web應用程序(JSF 2.1 + hibernate)設置一個容器管理器安全領域。我注意到Tomcat 7一次只能使用一種領域。Tomcat 7.11 JDBCRealm和UserDatabaseRealm不一起工作

要在netbeans(7.0)中使用Tomcat,我必須創建一個管理員腳本角色的帳戶。除了使用Tomcat管理器之外,我還需要另一個角色。這對我來說是一個大問題,因爲我用於JDBCRealm的表是來自存儲用戶和角色的實際表的視圖,我不想將這兩個角色存儲在我的程序使用的同一個數據庫中。

有沒有辦法讓JDBCRealm和UserDBRealm一起工作?這將是一個解脫。

這裏是代碼server.config:

<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> 

<Realm className="org.apache.catalina.realm.JDBCRealm" 
    driverName="org.gjt.mm.mysql.Driver" 
    connectionURL="jdbc:mysql://localhost:3306/realm?user=login&amp;password=pass" 
    userTable="users" 
    userNameCol="user_name" 
    userCredCol="user_pass" 
    userRoleTable="user_roles" 
    roleNameCol="role_name" /> 

Tomcat使用只有最後一個,他在文件中找到。他們工作的優良separetly

+0

理論上,您可以創建一個自定義領域。 – BalusC

+0

我會考慮這個。順便說一下你的博客規則。我找到了很多有關我的問題的答案 – Szajba

回答

1

使用CombinedRealmdocjavadoc):包含一個或多個領域

境界的實現。每個領域的驗證 都按照它們配置的順序進行嘗試。如果有任何 領域認證用戶,那麼認證成功。當 組合領域用戶名在所有組合的 領域中應該是唯一的。

也許你已經在使用LockOutRealmdocjavadoc),這是CombinedRealm一個子類,它是在Tomcat中的默認配置。

+1

是的,我使用的是LockOutRealm,但用戶名並不是跨領域唯一的。我確保我的程序不會使用與tomcat-users.xml中相同的名稱。現在作爲一種魅力。非常感謝你 – Szajba

相關問題