/ / Uso corretto dell'istruzione @ Security.Authenticated (Secured.class) in Play FrameWork - java, http, session, playframework

Uso corretto dell'istruzione @ Security.Authenticated (Secured.class) in Play FrameWork - java, http, session, playframework

Ciao, sto avendo problemi a capire come usare correttamente @ Security.Authenticated (Secured.class) dichiarazione all'interno di PlayFrameWork.

Sto cercando di assicurarmi che solo gli utenti autenticati possano accedere ai loro account. Seguendo l'esempio fornito nel Riproduci documenti , sembra che la loro autenticazione consenta a un singolo utente di accedere all'account di ogni utente una volta effettuato l'accesso, anziché solo il proprio.

Normalmente avrei dato per scontato che semplicemente il valore della sessione all'interno dell'azione dicesse,

    public static Result viewAccount(String account) {
//get session value and check against account name
}

Tuttavia i documenti utilizzano un'altra rotta: Definiscono una classe

    public class Secured extends Security.Authenticator {
@Override
public String getUsername(Context ctx) {
return ctx.session().get("username");
}

@Override
public Result onUnauthorized(Context ctx) {
return redirect(routes.Application.login());
}
}

Apparentemente ora semplicemente usando la frase: @ Security.Authenticated (Secured.class) prima che un'azione assicuri che è autenticata. Ma dalla mia comprensione e test questo non impedisce agli utenti di accedere a qualsiasi account mentre passa semplicemente se esiste un valore di sessione - e non se corrisponde. Come risolvere questo?

Devo solo confrontare direttamente il valore della sessione? Qual è lo scopo di @ Security.Authenticated (Secured.class)?

Grazie (Modificare) chiarire: Voglio consentire agli utenti di essere autorizzati solo a vedere i propri account e non altri.
Quindi quando la dichiarazione

    @Security.Authenticated(Secured.class)

è usato, mi piacerebbe che non solo controllasse la presenza di un id di sessione ma controllasse che corrispondesse ad un account

risposte:

2 per risposta № 1

Forse non capisco la tua domanda, ma nel documentazione vedi come creare un modulo di accesso e in realtàeseguire l'autenticazione. Solo dopo ciò accade il valore della sessione email esistente. Se quel valore è nella sessione, l'utente deve aver effettuato l'accesso con le credenziali appropriate e deve essere stato autenticato.

Naturalmente, se l'utente A conosce le credenziali dell'utente B, nulla può aiutarlo.

Se invece sei preoccupato autorizzazione, decidendo chi può vedere cosa dopo l'autenticazione, quindi puoi fare un sacco di cose tra cui sfruttare il supporto OAuth in Play corretto o un plugin come questo.