Spring Security With Cassandra - TimedOutException



我正在尝试使用带有Cassandra数据库的spring安全性对用户进行身份验证。我得到以下异常:

Authentication request failed: org.springframework.security.authentication.AuthenticationServiceException: PreparedStatementCallback; SQL [select email, lastlogin, password, usertype from login where email=?]; TimedOutException(); nested exception is java.sql.SQLTransientConnectionException: TimedOutException()

我厌倦了增加卡桑德拉的暂停时间和所有的一致性级别。我不知道是什么导致了这个错误,同样的查询在Cassandra DevCenter中运行良好。

以下是配置详细信息:

使用版本:

<properties>
    <java-version>1.7</java-version>
    <org.springframework-version>3.2.9.RELEASE</org.springframework-version>
    <org.aspectj-version>1.6.10</org.aspectj-version>
    <org.slf4j-version>1.6.6</org.slf4j-version>
    <cassandra-driver-core.version>1.0.5-dse</cassandra-driver-core.version>
    <jackson.databind-version>2.2.3</jackson.databind-version>
    <spring.security.version>3.2.3.RELEASE</spring.security.version>
</properties>

pom.xml的Cassandra依赖性:

<dependency>
    <groupId>org.apache-extras.cassandra-jdbc</groupId>
    <artifactId>cassandra-jdbc</artifactId>
    <version>1.2.5</version>
    <scope>compile</scope>
</dependency>

Cussandra Spring安全数据源定义:

<beans:bean id="cassandraDataSource" class="org.apache.cassandra.cql.jdbc.CassandraDataSource">
    <beans:constructor-arg name="host" value="${cassandra.contactpoints}"></beans:constructor-arg>
    <beans:constructor-arg name="port" type="int" value="${cassandra.thriftport}"></beans:constructor-arg>
    <beans:constructor-arg name="keyspace" value="${cassandra.keyspace}"></beans:constructor-arg>
    <beans:constructor-arg name="user" value="${cassandra.user}"></beans:constructor-arg>
    <beans:constructor-arg name="password" value="${cassandra.password}"></beans:constructor-arg>
    <beans:constructor-arg name="version" value="${cassandra.version}"></beans:constructor-arg>
    <beans:constructor-arg name="consistency" value="${cassandra.consistency}"></beans:constructor-arg>     
</beans:bean>

Cussandra性质:

cassandra.contactpoints=127.0.0.1
cassandra.thriftport=9160
cassandra.port=9042
cassandra.keyspace=styling_bee
cassandra.user=cassandra
cassandra.password=cassandra
cassandra.version=2.0.0
cassandra.consistency=ALL

春季安全配置:

<!-- enable use-expressions -->
<http auto-config="true" use-expressions="true">
    <intercept-url pattern="/showyourcloset**" access="hasRole('ROLE_CLIENT')" />
    <!-- access denied page -->
    <access-denied-handler error-page="/403" />
    <form-login 
        login-page="/login" 
        default-target-url="/" 
        authentication-failure-url="/login?error" 
        username-parameter="email"
        password-parameter="password" />
    <logout logout-success-url="/login?logout"  />
    <!-- enable csrf protection -->
    <csrf/>
</http>
<!-- Select users and user_roles from database -->
<authentication-manager>
    <authentication-provider>
        <jdbc-user-service 
            data-source-ref="cassandraDataSource"
            users-by-username-query="select email, lastlogin, password, usertype from login where email=?"
            authorities-by-username-query="select roleid, email, rolename from user_roles where email=?" />
    </authentication-provider>
</authentication-manager>

我不知道你是否已经找到了解决方案,但无论如何,你走错了路。相反,您必须根据http://docs.spring.io/autorepo/docs/spring-security/3.2.2.RELEASE/apidocs/org/springframework/security/core/userdetails/UserDetailsService.html.

相关内容

  • 没有找到相关文章

最新更新