jdbc spring security, apache commons dbcp

偶尔善良 提交于 2019-12-10 15:34:13

问题


In a Spring Security, I defined a jdbc auth manager:

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

At this point I've discovered that I need Jakarta Commons DBCP. I've added commons-dbcp-1.4, i get the following exception:

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

This path actually isn't included in commons dbcp 1.4.
What am I missing again?

EDITED
Ok, added the dependency to common pool, it works because with the right credentials I no more get the "bad credentials" page. But I get an HTTP Status 403 - Access is denied.
Seems like my user is authenticated , but isn't authorized.
Any idea...? :-)

My http element is:

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

and I have a "test" user that is bind to the "USER" role in the "authorities" table.

thanks


回答1:


Commons DBCP relies on the Commons Pools libraries, because of this, you actually need to download the commons-pool jar files, and include them in your path.

Commons Pool Downloads

You may also need to download the commons-collections package, too.




回答2:


The jar file commons-dbcp-1.4 does not contain the class org.apache.commons.pool.keyedobjectpoolfactory
You need to add another jar to your project classpath - commons-pool-1.4.
You can download commons-pool-1.4 from here http://commons.apache.org/pool/download_pool.cgi




回答3:


Try changing your test user's authority to ROLE_USER.




回答4:


Don't forget you'll also need the Postgre JDBC drivers, just in case you hadn't included those already.



来源:https://stackoverflow.com/questions/6509200/jdbc-spring-security-apache-commons-dbcp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!