2011-12-04 17 views
0

JPA永続性層にEclipseリンクを使用してSpring Rooプロジェクトをセットアップしました。私は自分のセキュリティを管理するために(User Roles、Users)テーブルを作成しました。誰かがApache Shiroを設定するためのSpringプロジェクトの領域を設定して、ユーザ名とパスワードを検索するだけでなく、ユーザ名とパスワードも保存するようにデータベーステーブルを使用するようにしているのだろうか?Spring RooプロジェクトにApache Shiroを使用してJDBC領域を設定する

現在、私はShiro.iniファイルをいくつかのテストロールと(ユーザー名、パスワード)の組み合わせで使用していますが、正しいフィルタを使用してweb.xmlファイルを構成する方法を理解しようとしています。以下は私のweb.xmlファイルと現在のフィルタセットです。

<filter> 
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name> 
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class> 
</filter> 
<!-- all declarations in shiro.ini file --> 
<filter> 
    <filter-name>ShiroFilter</filter-name> 
    <filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class> 
</filter> 


<filter-mapping> 
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<filter-mapping> 
    <filter-name>ShiroFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

Apache ShiroとSpringで(Postgres)を使用するJDBCレルムの例はありますか?

答えて

3

正しいweb.xml設定については、Shiro's Spring documentationを参照してください。あなたが示したweb.xmlの例とは異なります。

春のXML設定はShiroのINIよりも少し強力ですので、SpringユーザーはShiro INIの代わりに完全なSpring設定を使用することをお勧めします。 ShiroのSpring-only設定の例を見るには、そのページの 'Web Applications'セクションを参照してください。

そのページのマニュアルの「applicationContext.xmlを」部分では、あなたは、XML設定の

<bean id="myRealm" class="..."> 
... 
</bean> 

一部が表示されます。これをJdbcRealm Bean定義に置き換えます。予想通りあなたは春に構成されたデータソースを注入することができます

<bean id="myRealm" class="org.apache.shiro.realm.jdbc.JdbcRealm"> 
    <property name="dataSource" ref="springConfiguredDataSource"/> 
    ... 
</bean> 

あなたはJdbcRealm's source codeを見ることで実行され、デフォルトのSQLクエリを見ることができます。

必要に応じてこれらのクエリを構成できます。

JdbcRealmがあなたのニーズに十分でないような複雑なデータモデルの場合、ShiroのAuthorizingRealmを拡張し、好きなデータソースAPIを使用してuser/role/permissionの検索を実行するのは簡単です(JPA、休止状態など)。

+0

返信ありがとうございます。 2つの質問、春に構成されたデータソースの意味を説明できますか?これは私のpostgresドライバ情報を持っているshiro.iniファイルを必要としないことを意味しますか? – Warz

+0

ええ、それは正しいです - 春を使うとき、 'shiro.ini'ファイルは全く必要ではありません。 docoに示されているように 'web.xml'を設定したと仮定すると、その他はすべてSpringで構成されています。 (shiro.iniの '[main]'セクションは、JavaBeansゲッタとセッタを介した本当に '貧しい人の依存関係注入'です.D SpringはDIを直接実行するので、Springコンフィグレーションを使用している場合は 'shiro.ini'は必要ありません)。 –

+1

私はすべてのデータベースアクセス呼び出しと管理に使用しているJPAセットアップ(EclipseLink)を持っています。 Shiro JPARealmsの例がありますか、または認可/認証の目的でJDBC領域を使用することは可能ですか? – Warz

関連する問題