-3

データベースを使用して認証マネージャーを作成する方法は?

users-by-username-query = "SELECT a AS username、b AS password、userstatusASenabled。このuserstatusには複数の値があります。0,1,2,3..。

4

2 に答える 2

1

クエリに if を使用 (仮定: userstatus 0 が無効で、別のステータスが有効):

SELECT a AS username, b AS password, if(userstatus=0,0,1) AS enabled

内部に別の if ステートメントを追加できます。

于 2013-02-12T11:01:02.327 に答える
0

提出された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の他のコンポーネントは、ユーザーが有効になっている場合、ロックされていない場合などにのみ認証を受けることができるようにします。

于 2013-02-12T09:59:26.780 に答える