特定のページへのリダイレクトを処理します
-
23-12-2019 - |
質問
deadbolt を使用しています。彼が存在する場合はユーザーをリダイレクトする必要があります(subjectPresent
)。たとえば、このコントローラは登録ページをレンダリングします。
public static Result signup() {
return ok(signup.render())
}
.
しかし、ユーザーが既に存在している場合(彼はすでに登録されています)上記のコントローラは彼を自分のプロフィールページにリダイレクトする必要があります:return ok(profilePage.render())
注釈をどのようにすることができますか?
解決
デッドボルトはこのような条件付きの切り替えのためには実際ではありませんが、次のようにハックすることができます:
- 他のDeadbolthandlerを作成し、MainistresentHandler のようなものと呼ばれます。
- プロファイルページ にリダイレクトするように件のPresosentHandler#onAuthFailureメソッドを実装します。
-
あなたの登録方法を
で注釈を付ける@SubjectPresent(handler= jusctialpresenthandler.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;
}
.所属していません StackOverflow