Tratamento de redirecionar para uma página específica
-
23-12-2019 - |
Pergunta
Eu estou usando Deadbolt para obter a autorização.Eu preciso redirecionar um usuário se ele está presente (subjectPresent
).Por exemplo, este controlador processa a página de inscrição:
public static Result signup() {
return ok(signup.render())
}
Mas, se um usuário já está presente (em seguida, ele já está registrado) acima controlador para redirecioná-lo para a sua página de perfil: return ok(profilePage.render())
Como pode fazê-lo com anotação?
Solução
Trava não é realmente para esse tipo de condicional, comutação, mas você pode cortá-lo da seguinte forma:
- Criar outro DeadboltHandler, chamado de algo como SubjectPresentHandler
- Implementar o SubjectPresentHandler#onAuthFailure método para redirecionar para a página do perfil
Anotar a sua inscrição método com
@SubjectNotPresent(handler=SubjectPresentHandler.class)
Isso faz com que uma autorização falha se um usuário estiver presente.Esta será, então, invocar SubjectPresentHandler#onAuthFailure para obter o resultado.
No entanto, pessoalmente, gostaria de considerar a adição de um simples teste dentro de inscrição método ao longo das linhas de
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;
}