Manejo de redirigir a una página específica.
-
23-12-2019 - |
Pregunta
Estoy usando Deadbolt para la autorización.Necesito redirigir a un usuario si está presente (subjectPresent
).Por ejemplo, este controlador hace que la página de registro:
public static Result signup() {
return ok(signup.render())
}
Pero si un usuario ya está presente (entonces ya está registrado), el controlador anterior tiene que redirigirlo a su página de perfil: return ok(profilePage.render())
¿Cómo puede hacerlo con anotación?
Solución
Deadbolt no es realmente para este tipo de conmutación condicional, pero podría piridiarlo de la siguiente manera:
- crea otro cerrojo de Deadbolthandler, llamado algo como AsuntoPresentlerler
- Implementar el Método SubyPresentHandler # ONAUTHFFAILUSE para redirigir a la página de perfil
-
anotando su método de registro con
@subjectNotPresent (Handler= asuntoPresenthandler.class)
Esto provoca una falla de autorización si hay un usuario presente.Luego, esto invocará a SubyPresentHandler # ONAUTHFFAILURE para obtener el resultado.
Sin embargo, personalmente consideraría agregar una prueba simple dentro del método de registro a lo largo de las líneas 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;
}