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?

Foi útil?

Solução

Trava não é realmente para esse tipo de condicional, comutação, mas você pode cortá-lo da seguinte forma:

  1. Criar outro DeadboltHandler, chamado de algo como SubjectPresentHandler
  2. Implementar o SubjectPresentHandler#onAuthFailure método para redirecionar para a página do perfil
  3. 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;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top