0

認証にDeadboltを使用しています。ユーザーが存在する場合はリダイレクトする必要があります ( subjectPresent)。たとえば、このコントローラーはサインアップ ページをレンダリングします。

public static Result signup() {
     return ok(signup.render())
 }

しかし、ユーザーがすでに存在している (そのユーザーは既に登録されている) 場合、上記のコントローラーはユーザーをプロファイル ページにリダイレクトする必要があります。return ok(profilePage.render())

注釈を使用してどのように行うことができますか?

4

1 に答える 1

2

Deadbolt は、この種の条件付き切り替えには適していませんが、次の方法でハックできます。

  1. SubjectPresentHandler のような名前の別の DeadboltHandler を作成します。
  2. SubjectPresentHandler#onAuthFailure メソッドを実装して、プロファイル ページにリダイレクトします。
  3. サインアップ方法に注釈を付けます

    @SubjectNotPresent(handler=SubjectPresentHandler.class)

これにより、ユーザーが存在する場合、承認エラーが発生します。次に、SubjectPresentHandler#onAuthFailure を呼び出して結果を取得します。

ただし、個人的には、サインアップ メソッド内に次のような簡単なテストを追加することを検討します。

public static Result signup() {
    Result result;
    User user = // however you normally get your user
    if (user == null) {
        result = ok(signup.render())
    } else {
        result = redirect(routes.<your profile view method>);
    }
    return result;
}
于 2013-11-18T11:56:36.197 に答える