Sono in procinto di costruire un sistema di controllo degli accessi come parte di un framework web che sto sviluppando. Voglio renderlo super flessibile e fantastico. Potete aiutarmi fornendo input e informazioni sul mio design? Qui è il mio lavoro fino ad ora (le mie domande specifiche sono in fondo):Costruisci un sistema di controllo di accesso migliore
Utenti
- Gli utenti hanno un nome utente (32 caratteri, senza spazi) e la password
- Gli utenti hanno uno o più indirizzi di posta elettronica che devono essere verificate
- Gli utenti possono effettuare il login utilizzando un nome utente o qualsiasi dei loro indirizzi e-mail
- Gli utenti possono essere associati a zero o più conti
Conti
- conti rappresentano uno o più utenti
- Ogni utente può disporre di autorizzazioni specifiche o ruoli per un account (ad esempio, l'account proprietario o "può aggiungere nuovo utente")
- Tutto conti sono legate a un tipo di account
Tipi di conto
- tipi di account hanno zero o molti ruoli tipo di conto
- tipi di account hanno zero o molti tipo di conto presenta
Tipo di account ruoli
- ad esempio, "Owner", "Amministratore", "Utente avanzato", "Ospite", ecc.
- I ruoli del tipo di account sono una raccolta di autorizzazioni per il tipo di account
Permessi Tipo di account
- tipo di account permessi sono azioni specifiche nel sistema che la logica applicazione verificherà contro
- Essi possono fare riferimento a un genitore, in modo che possano essere gerarchicamente raggruppati
- Per esempio:
- "Gestione utenti"
- "Aggiungi utente"
- "Rimuovi utente"
- "Gestione utenti"
- Tali autorizzazioni possono essere specificamente per una funzione di tipo di account
Tipo di account Funzionalità
- caratteristiche tipo di account possono essere attivati su un conto per dare più permessi
- ad esempio, "account standard" o "Premium Account"
- Queste caratteristiche, se attivato su un conto, darà il account del proprietario maggiore accesso al sistema
- sono tracciati quando sono attivati o disattivati e possono essere fatturati contro periodicamente o su richiesta
Quest ioni
Qual è il modo migliore per verificare la logica dell'applicazione rispetto a un'azione dell'utente? Stavo pensando di archiviare tutte le autorizzazioni di un utente in un oggetto per la sua sessione (che richiederebbe un logout/login per aggiornare le autorizzazioni, di cui non sono un fan - qualsiasi idea sulla gestione dei permessi in tempo reale?):
{
"All Permissions": {
"User Management": {
"Add User",
"Delete User"
},
"Premium Account": {
"Download Files",
"Upload Files"
},
}
}
Vorrei quindi dichiarare le autorizzazioni necessarie per un'azione specifica nel sistema. Forse qualcosa del tipo:
Permission::require('Add User');
Se le autorizzazioni dichiarate non erano nell'oggetto di autorizzazione degli utenti, la richiesta non avrebbe avuto esito positivo. Questo sembra piuttosto intenso per ogni azione dell'utente. Inoltre, cosa succede se un altro sottoinsieme di permessi ha la stringa "Aggiungi utente"?
Grazie in anticipo per qualsiasi aiuto con questo!
Questo è il video a cui ho anche collegato nella mia risposta –
sì molto limitazione ho bisogno di più controlli. –