Обработка перенаправления на определенную страницу
Я использую Deadbolt для авторизации. Мне нужно перенаправить пользователя, если он присутствует (subjectPresent
). Например, этот контроллер отображает страницу регистрации:
public static Result signup() {
return ok(signup.render())
}
Но если пользователь уже присутствует (тогда он уже зарегистрирован), вышеуказанный контроллер должен перенаправить его на страницу своего профиля: return ok(profilePage.render())
Как можно сделать это с аннотацией?
1 ответ
Deadbolt на самом деле не для этого вида условного переключения, но вы можете взломать его следующим образом:
- Создайте еще один DeadboltHandler, называемый что-то вроде SubjectPresentHandler
- Реализуйте метод SubjectPresentHandler#onAuthFailure для перенаправления на страницу профиля
Аннотируйте свой метод регистрации с помощью
@SubjectNotPresent(Обработчик =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;
}