0

ユーザーを認証できます

Authentication request = new UsernamePasswordAuthenticationToken(this.username, this.password);
            Authentication result = authenticationManager.authenticate(request);
            SecurityContextHolder.getContext().setAuthentication(result);

ここで、user.status フィールドが「アクティブ」であるユーザーを選択する必要があります。

ステータスフィールドをチェックする上記のコードの前にいくつかの行を置くことができると思います。

しかし、Spring Securityにそれをさせることができれば、よりエレガントで整頓されているとも思います。

しかし、いくつかのクラスまたはいくつかのメソッドをオーバーライドして、SSにそれをさせる方法がわかりませんか?

提案をありがとう。

4

2 に答える 2

0

2 つのステータス (「アクティブ」、「非アクティブ」) しかない場合は、カスタムの user.status フィールドの代わりに、ネイティブのuser.enabledフィールドを使用できます。このフィールドは、AuthenticationManager.authenticate() メソッドによって自動的にチェックされます (DaoAuthenticationProvider などのネイティブ AuthenticationProvider を使用する場合)。標準ユーザースキーマの有効な属性を参照してください

于 2013-01-03T15:05:13.353 に答える
0

Spring セキュリティ構成で、次の SpEL をインターセプト URL に追加できます。

<intercept-url pattern="/**" access="isFullyAuthenticated() and principal.status == 'active'/>
于 2013-01-03T15:16:34.467 に答える