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?

¿Fue útil?

Solución

Deadbolt no es realmente para este tipo de conmutación condicional, pero podría piridiarlo de la siguiente manera:

  1. crea otro cerrojo de Deadbolthandler, llamado algo como AsuntoPresentlerler
  2. Implementar el Método SubyPresentHandler # ONAUTHFFAILUSE para redirigir a la página de perfil
  3. anotando su método de registro con

    @subjectNotPresent (Handler= asuntoPresenthandler.class)

  4. 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;
    }
    

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top