Domanda

Sto usando Deadbolt per l'autorizzazione.Ho bisogno di reindirizzare un utente se è presente (subjectPresent).Ad esempio, questo controller render la pagina di iscrizione:

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

Ma se un utente è già presente (allora è già registrato) il controller di cui sopra deve reindirizzarlo nella sua pagina del profilo: return ok(profilePage.render())

Come può farlo con annotazione?

È stato utile?

Soluzione

Deadbolt non è realmente per questo tipo di commutazione condizionale, ma potresti hackarlo nel modo seguente:

    .
  1. Crea un altro Deadbolthandler, chiamato qualcosa come il soggettoPresentHandler
  2. Implementare il soggettoPresentHandler # OnauthFailure Metodo per reindirizzare la pagina del profilo
  3. Annota il tuo metodo di iscrizione con

    @subjectNotPresent (Handler= SoggettoPresentHandler.Class)

  4. Ciò causa un errore di autorizzazione se è presente un utente.Questo invierà quindi il soggettoPresentHandler # OnauthFailure per ottenere il risultato.

    Tuttavia, personalmente considererei di aggiungere un semplice test all'interno del metodo di registrazione lungo le linee di

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top