SpringRooプロジェクトのためにApache Shiroを使用してJDBCレルムをセットアップする
-
28-10-2019 - |
質問
JPA PersistenceレイヤーのEclipseリンクを使用してSpring-Rooプロジェクトを設定しており、セキュリティを管理するために(ユーザーロール、ユーザー)テーブルを作成しました。ユーザー名とパスワードにデータベーステーブルを使用し、ユーザー名とパスワードを保存するように、Apache Shiroを構成するために春のプロジェクトを備えた領域を設定した人がいるかどうか疑問に思っていましたか?
現在、いくつかのテストロールと(ユーザー名、パスワード)の組み合わせで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領域の例がありますか?
解決
参照してください シロの春のドキュメント 正しいweb.xml構成用。これは、表示したWeb.xmlの例とは異なります。
SpringのXML構成はShiroのINIよりもわずかに強力であるため、SpringユーザーはShiro INIの代わりにフルスプリング構成を使用することをお勧めします。そのページの「Webアプリケーション」セクションを参照して、ShiroのSpringのみの構成の例をご覧ください。
そのページのドキュメントの「ApplicationContext.xml」の一部には、
<bean id="myRealm" class="...">
...
</bean>
XML構成の一部。 JDBCrealm Beanの定義にそれを置き換えます。予想どおり、春に構成されたデータソースを挿入できます。
<bean id="myRealm" class="org.apache.shiro.realm.jdbc.JdbcRealm">
<property name="dataSource" ref="springConfiguredDataSource"/>
...
</bean>
を見ることで実行されているデフォルトのSQLクエリを見ることができます JDBCREALMのソースコード.
必要に応じてこれらのクエリを構成できます。
データモデルがあなたのニーズに十分でないように十分に複雑である場合、Shiroの拡張は簡単であることに注意してください 承認realm ユーザー/ロール/許可検索を実行し、必要なデータソースAPI(JPA、Hibernateなど)を使用して実行します。