Gestione reindirizzamento a una pagina specifica
-
23-12-2019 - |
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?
Soluzione
Deadbolt non è realmente per questo tipo di commutazione condizionale, ma potresti hackarlo nel modo seguente:
- .
- Crea un altro Deadbolthandler, chiamato qualcosa come il soggettoPresentHandler
- Implementare il soggettoPresentHandler # OnauthFailure Metodo per reindirizzare la pagina del profilo
-
Annota il tuo metodo di iscrizione con
@subjectNotPresent (Handler= SoggettoPresentHandler.Class)
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;
}
.