私は、春のセキュリティを使用してユーザーのログインを検証しています。
ユーザーの資格情報はデータベースに格納されます。
私の "appContext-security.xml"ファイルの関連セクションです。Springの "user-by-username-query"節をJavaクラスで使用する方法は?
このコードは動作します - しかし、私の問題は、私は「バイ・ユーザ名・クエリーユーザー」と "当局バイ名クエリ"タグの生のSQLクエリを使用していますということです。 したがって、複数のデータベースをサポートする必要があり、SQL構文が異なる場合、問題が発生します。
これらのクエリをJavaクラスの形式にすることはできますか?そのJavaクラスは簡単にこれらのSQLを作成しますDB依存?
<authentication-manager alias="authManager">
<authentication-provider>
<password-encoder hash="md5"/>
<jdbc-user-service data-source-ref="jndiDataSource"
users-by-username-query="select name, password, enabled from USER where user_status<>0 and name=?"
authorities-by-username-query="select m.name,p.name from USER m, ROLE p where m.name=? and m.application_role=p.id"/>
</authentication-provider>
</authentication-manager>
<beans:bean id="jndiDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<beans:property name="jndiName" value="java:/appManaged"/>
</beans:bean>
ご協力いただければ幸いです。
迅速な対応に感謝します。しかし、私はまだSQLがXML定義の一部であることがわかります。 setAuthoritiesByUsernameQuery()およびsetUsersByUsernameQuery()apisをオーバーライドできるように、JdbcDaoImplの独自の実装をどのように提供する必要がありますか? – javauser71
私はそれを得た。私はorg.springframework.security.core.userdetails.jdbc.JdbcDaoImplから拡張した独自のDaoImplクラスを導入し、 "public UserDetails loadUserByUsername(String username)" apiを適切にオーバーライドしました。今私はより多くのコントロールを持っています。ご協力いただきありがとうございます。とても有難い。 – javauser71
私が探していたもの!どうもありがとう。 – javabot