Question

j'utilise Pêne dormant pour autorisation.J'ai besoin de rediriger un utilisateur s'il est présent (subjectPresent).Par exemple, ce contrôleur affiche la page d'inscription :

public static Result signup() {
     return ok(signup.render())
 }

Mais si un utilisateur est déjà présent (alors il est déjà enregistré), le contrôleur ci-dessus doit le rediriger vers sa page de profil : return ok(profilePage.render())

Comment le faire avec une annotation ?

Était-ce utile?

La solution

Deadbolt n'est pas vraiment destiné à ce type de commutation conditionnelle, mais vous pouvez le pirater de la manière suivante :

  1. Créez un autre DeadboltHandler, appelé quelque chose comme SubjectPresentHandler
  2. Implémentez la méthode SubjectPresentHandler#onAuthFailure pour rediriger vers la page de profil
  3. Annotez votre méthode d'inscription avec

    @SubjectNotPresent(handler=SubjectPresentHandler.class)

Cela provoque un échec d’autorisation si un utilisateur est présent.Cela invoquera ensuite SubjectPresentHandler#onAuthFailure pour obtenir le résultat.

Cependant, personnellement, j'envisagerais d'ajouter un test simple dans la méthode d'inscription dans le sens 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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top