2009-09-19 21 views
5

Vorrei chiedere qual è il modo comune per gestire la sicurezza basata sui ruoli con Google App Engine, Python?Sicurezza basata su ruoli con Google App Engine e Python

Nell'app.yaml, c'è la sezione "login", ma i valori disponibili sono solo "admin" e "required".

Come si gestisce normalmente la sicurezza basata sui ruoli?

  • Creare il modello con due tavoli: Ruoli e UserRoles
  • valori di importazione per la tabella Ruoli
  • aggiungere manualmente l'utente a UserRoles
  • Verificare se l'utente è nel gruppo di ruoli giusti

Qualsiasi altra idea o altro metodo per la sicurezza basata sui ruoli, fatecelo sapere!

risposta

4

Lo farei aggiungendo una proprietà List per i ruoli al modello che rappresenta gli utenti. L'elenco contiene tutti i ruoli a cui un determinato utente appartiene. In questo modo, se vuoi sapere se un determinato utente appartiene a un dato ruolo (mi aspetto, l'operazione più comune), è un test rapido di iscrizione.

È possibile inserire i nomi dei ruoli direttamente negli elenchi come stringhe o aggiungere un livello di riferimento indiretto a un'altra entità specificando i dettagli sul ruolo in modo che sia facile modificare i dettagli in un secondo momento. Ma questo ha un costo di runtime di un RPC aggiuntivo per recuperare i dettagli sul ruolo.

Lo svantaggio di questo metodo si ottiene se si desidera rimuovere tutti gli utenti da un determinato ruolo o eseguire qualsiasi altro tipo di operazione globale. Suppongo che potresti contrassegnare un ruolo "cancellato", ma poi hai ancora dati che ingombrano tutti i tuoi modelli utente fino a quando non li pulisci manualmente. Quindi sono curioso di sapere cosa suggeriscono gli altri.

+0

+1. Se si desidera modificare tutti gli utenti con un ruolo, è possibile eseguire una query sulla proprietà elenco come se fosse una proprietà normale per trovare tutti gli utenti con quel ruolo. –

+0

quindi significa che non ci sono modi dedicati per gestire la sicurezza basata sui ruoli da GAE con Python? dobbiamo ancora gestirlo manualmente? –

+0

Corretto, anche se non sono sicuro di quale sia la soluzione "dedicata", vista l'ampia varietà di esigenze di autenticazione delle persone. –