jdbc spring security, apache commons dbcp



在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>

在这一点上,我发现我需要Jakarta Commons DBCP。我添加了commons-dbcp-1.4,我得到了以下异常:

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

这个路径实际上没有包含在commons dbcp 1.4中
我又错过了什么

编辑
好的,将依赖项添加到公共池中,它可以工作,因为有了正确的凭据,我就不会再看到"坏凭据"页面。但我收到一个HTTP状态403-访问被拒绝
我的用户似乎已通过身份验证,但未获得授权
有什么想法吗?:-)

我的http元素是:

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

我有一个"测试"用户,它绑定到"authority"表中的"user"角色。

感谢

Commons DBCP依赖于Commons Pools库,因此,您实际上需要下载Commons pool jar文件,并将它们包含在您的路径中。

Commons Pool下载

您可能还需要下载commons collections包。

jar文件commons-dbcp-1.4不包含类org.apache.commons.pool.keyedobjectpoolfactory
您需要将另一个jar添加到您的项目类路径中-commons-pool-1.4
你可以从这里下载commons-pool-1.4http://commons.apache.org/pool/download_pool.cgi

尝试将测试用户的权限更改为ROLE_user。

别忘了,您还需要PostgreJDBC驱动程序,以防尚未包含这些驱动程序。

最新更新