jdbc-user-service を使用して春のセキュリティ ログインに取り組んでいます。Mysql では動作しますが、Oracle では動作しません。私はオラクル11 XEを使用しています。
タグで言及したクエリは、Oracle コンソールで実行すると期待される行が返されるため、正しいものです。
データソースは次のとおりです。
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${datasource.url}" />
<property name="username" value="${jdbc.user}" />
<property name="password" value="${jdbc.password}" />
</bean>
sessionFactory では、オラクルの Bean 休止状態方言が与えられます。
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
同じコードは、Oracle ではなく mysql で機能します。アプリケーション コントロールは、Spring セキュリティ ファイルで設定したログイン ページにリダイレクトされます。これは、ユーザー名とパスワードを正しく取得していることを意味します。
<form-login login-page="/landing" default-target-url="/home"
authentication-failure-url="/landing?msg=cw" />
spring security xml の認証プロバイダー コードは次のとおりです。
<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="
select USERNAME as username, PASSWORD as password,'true' as enabled from
users where USERNAME=?"
authorities-by-username-query=" select u.USERNAME
as username, r.ROLE as authority from users u, roles r, user_roles
ur where u.USER_ID = ur.USER_ID and ur.ROLE_ID = r.id and u.USER_ID = (SELECT
USER_ID from users where USERNAME = ?)" />
</authentication-provider>
</authentication-manager>
春のセキュリティでオラクルを使用するために設定する必要があるものはありますか?
更新:春のセキュリティデバッグを設定しました。これは、ログインしようとした後に表示されるものです。
INFO : Spring Security Debugger -
************************************************************
Request received for '/j_spring_security_check':
org.apache.catalina.connector.RequestFacade@7262b6
servletPath:/j_spring_security_check
pathInfo:null
Security filter chain: [
ConcurrentSessionFilter
SecurityContextPersistenceFilter
LogoutFilter
UsernamePasswordAuthenticationFilter
BasicAuthenticationFilter
RequestCacheAwareFilter
SecurityContextHolderAwareRequestFilter
AnonymousAuthenticationFilter
SessionManagementFilter
ExceptionTranslationFilter
FilterSecurityInterceptor
]
************************************************************
INFO : Spring Security Debugger -
************************************************************
Request received for '/landing?msg=cw':
org.apache.catalina.connector.RequestFacade@bf1a4a
servletPath:/landing
pathInfo:null
Security filter chain: [
ConcurrentSessionFilter
SecurityContextPersistenceFilter
LogoutFilter
UsernamePasswordAuthenticationFilter
BasicAuthenticationFilter
RequestCacheAwareFilter
SecurityContextHolderAwareRequestFilter
AnonymousAuthenticationFilter
SessionManagementFilter
ExceptionTranslationFilter
FilterSecurityInterceptor
]
************************************************************