2


shiroを使用してCXFWebサービスの認証を実装しています。私はjdbc-Realmを使用しており、iniファイル(以下に添付)を使用して構成しました。認証データは、必要な他のデータと同じデータベースに保持されますが、システムの残りの部分では、接続情報を提供するためにプロパティファイル(以下にもあります)を使用します。

どちらの場合もデータソースのデータは明らかに同じですが、このコードの重複を解決する方法が見つからないようです。Webアプリケーションの開発に経験のある人は誰でも解決策を持っていますか?助けがあれば、shiroとシステムの残りの部分の両方の構成を変更することができます。

よろしくお願いします、
zakum

shiro.ini:

[main]
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.authenticationQuery = SELECT password FROM users WHERE username = ?;

ds = org.postgresql.ds.PGSimpleDataSource
ds.user = postgres
ds.password = password
ds.databaseName = servicedb
ds.serverName = localhost
ds.portNumber = 5432

jdbcRealm.dataSource = $ds
securityManager.realms = $jdbcRealm

service.properties:

db. It looks like:
db.name = servicedb
db.user = postgres
db.password = password
db.url = //localhost:5432/
4

3 に答える 3

0

Spring のようなコンテナーを使用して、Shiro と JDBC 接続を構成します。次に、dataSource を参照として JDBCRealm に渡すことができます。

<bean id="dataSourceBean" class="com.apache.commons.dbcp.BasicDataSource>
  <property name="driverClassName" value"class for driver"/>
  ... more setup for the data source ...
</bean>

<bean id="jdbcRealm" class="org.apache.shiro.realm.jdbc.JdbcRealm">
  <property name="dataSource" ref="dataSourceBean"/>
  <property name="permissionsLookupEnabled" value="true"/>
  <property name="authenticationQuery" value="SELECT password FROM users WHERE username = ?"/>
</bean>
于 2012-09-18T15:34:12.530 に答える