データベースを使用して認証マネージャーを作成する方法は?
users-by-username-query = "SELECT a AS username、b AS password、userstatusASenabled。このuserstatusには複数の値があります。0,1,2,3..。
データベースを使用して認証マネージャーを作成する方法は?
users-by-username-query = "SELECT a AS username、b AS password、userstatusASenabled。このuserstatusには複数の値があります。0,1,2,3..。
クエリに if を使用 (仮定: userstatus 0 が無効で、別のステータスが有効):
SELECT a AS username, b AS password, if(userstatus=0,0,1) AS enabled
内部に別の if ステートメントを追加できます。
提出されたuserstatusの値は何を表していますか?これは、バイナリの有効化/無効化フラグ以上のものですが、正確に何を意味するのかは不明です。
これらの値をUserDetails
インターフェースのプロパティ(有効、アカウントの有効期限が切れている、アカウントがロックされている、資格情報の有効期限が切れている)にマップできるかどうかを確認してください。その場合JdbcDaoImpl.loadUsersByUsername()
、サブクラスでオーバーライドするだけで、データベースにファイルされているUser
オブジェクトに従ってオブジェクトが作成さuserstatus
れます。次に、このカスタマイズされたサブクラスをUserDetailsService
:として構成します。
<authentication-manager>
<authentication-provider user-service-ref='myUserDetailsService'/>
</authentication-manager>
<beans:bean id="myUserDetailsService" class="YourCustomJdbcDaoImpl">
<beans:property name="dataSource" ref="dataSource"/>
</beans:bean>
Spring Securityの他のコンポーネントは、ユーザーが有効になっている場合、ロックされていない場合などにのみ認証を受けることができるようにします。