Domanda

Ci ho pensato per il web app che sto per iniziare a sviluppare e si chiede se il mio approccio al solito potrebbe essere migliorata.

Nelle mie ultime applicazioni Ho creato una tabella (vedi sotto) di ruoli (come CREATE POST, EDIT POST ecc), che hanno ciascuno una bitfield applicata a loro in modo che si può semplicemente assegnare un utente determinati diritti di registrazione e di controllo loro in seguito (ad es $user->hasRight(CREATE_POST)).

Mi chiedo se c'è un approccio migliore a questo. E 'certamente confusione quando i diritti non sono specificamente legati all'utente (ho potuto avere una tabella in cui ogni diritto è una colonna booleana, ma che suona solo come un piccolo miglioramento) -? E cosa succede se cambio un po' in giro

Non sto cercando di usare librerie standard (l'applicazione stessa è un'esperienza di apprendimento per me: con PostgreSQL, git, ecc) anche se io sono perfettamente felice di prendere spunto da loro per costruire la mia - quindi se c'è qualcosa speciale pensi che dovrei dare un'occhiata a favore, dire così:)

È stato utile?

Soluzione

Questo è fondamentalmente lo stesso approccio prendo nelle mie applicazioni web (e un po 'di tentativi ed errori è andato in quella per me). L'unica differenza è, probabilmente userei una tabella che ha le autorizzazioni diverse come colonne, in modo che se si desidera aggiungere più autorizzazioni in seguito, è possibile. Utilizzando i bit in un numero intero si limita ad un numero fisso di autorizzazioni, ovvero tanti bit quanti sono in numero intero. In genere che sarebbe 32 che suppongo sia probabilmente sufficiente, ma preferisco non limitarmi in quel modo.

Per quel che vale, che è anche il modello che utilizza phpBB (autorizzazioni come colonne della tabella), e se è abbastanza buono per senza dubbio il più popolare applicazione web PHP, è abbastanza probabilmente un bene per voi; -)

Altri suggerimenti

Si potrebbe dare un'occhiata alla documentazione di Primavera di sicurezza (ex Acegi), che è un framework Java ACL ampiamente utilizzato.

La documentazione è esaustivo e descrive anche le varie considerazioni fatte nella progettazione di autenticazione e l'autorizzazione bot. Anche senza l'utilizzo di Java è degno lettura.

È possibile visualizzare il pagina di indice per avere una visione d'insieme e l'impressione di ciò che Acegi fa (e non) fare. È inoltre possibile passare direttamente al concetti di autorizzazione o anche al schema del database .

Sono sicuro che hai trovato già Phpgacl, ma ecco un link nel caso in cui non si dispone. Può essere un po 'agitato per avvolgere la testa intorno in un primo momento, e certamente la biblioteca è difficile (in termini di tempo) per implementare in un progetto, ma la documentazione e demo sono i punti di riferimento eccellente.

PHP Generic Access Control Lists

Il Zend Framework ha un ACL che è simile a quello che stai cercando di fare.

ACL si avvicina in applicazioni web, in generale, sono state discusse, ad esempio qui .

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