4

Spring Securityで、jdbc認証マネージャーを定義しました。

<security:authentication-manager>
    <security:authentication-provider>
        <security:jdbc-user-service data-source-ref="securityDataSource"/>
    </security:authentication-provider>
</security:authentication-manager>

<bean id="securityDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="org.postgresql.Driver"/>
    <property name="url" value="jdbc:postgresql://127.0.0.1:5432/mydb"/>
    ... user and password props ...
</bean>

この時点で、JakartaCommonsDBCPが必要であることがわかりました。commons-dbcp-1.4を追加しましたが、次の例外が発生します。

...java.lang.NoClassDefFoundError: org/apache/commons/pool/KeyedObjectPoolFactory

このパスは、実際にはcommonsdbcp1.4には含まれていません。
私はまた何が欠けていますか?

編集
OK、共通プールに依存関係を追加しました。正しいクレデンシャルを使用すると、「不正なクレデンシャル」ページが表示されなくなるため、機能します。しかし、HTTPステータス403が表示されます-アクセスが拒否されました。
私のユーザーは認証されているようですが、許可されていません。
何か案が...?:-)

私のhttp要素は:

<security:http auto-config="true" >
    <security:intercept-url pattern="/**" access="ROLE_USER"/>
</security:http>

そして、「authorities」テーブルの「USER」ロールにバインドされている「test」ユーザーがいます。

ありがとう

4

4 に答える 4

9

CommonsDBCPはCommonsPoolsライブラリに依存しています。このため、実際にはcommons-pool jarファイルをダウンロードして、パスに含める必要があります。

コモンズプールのダウンロード

commons-collectionsパッケージもダウンロードする必要があるかもしれません。

于 2011-06-28T15:46:53.493 に答える
2

jarファイルcommons-dbcp-1.4にクラスが含まれていませんorg.apache.commons.pool.keyedobjectpoolfactory
プロジェクトのクラスパスに別のjarを追加する必要があります--commons-pool-1.4。
commons-pool-1.4はここからダウンロードできますhttp://commons.apache.org/pool/download_pool.cgi

于 2011-06-28T15:53:39.180 に答える
2

テストユーザーの権限をROLE_USERに変更してみてください。

于 2011-06-28T18:14:02.860 に答える
1

まだ含めていない場合に備えて、PostgreJDBCドライバーも必要になることを忘れないでください。

于 2011-06-28T15:52:11.360 に答える