MySQL PHP Permessi utente / gruppo

1

Sto provando a configurare una tabella del database mysql che posso usare come tabella delle autorizzazioni per utente / gruppo. Quasi come quello che Facebook ha, per un sito intranet aziendale locale.

Qual è il modo migliore di progettare questa tabella, che mi consenta di trovare i permessi degli utenti con il minor numero di richieste o query?

    
posta Justin E 17.01.2014 - 21:21
fonte

1 risposta

4

Esistono diversi modi per gestire le autorizzazioni. Volendo convalidare questi nel database, una delle opzioni possibili è stabilire un elenco di autorizzazioni e associare queste autorizzazioni a possibili azioni da parte dell'utente (la creazione di gruppi è una conseguenza di questo rapporto).

Supponendo quindi un caso molto semplice, in cui l'utente decide di eseguire un'azione sull'interfaccia, ad esempio, "aggiungi un commento a un post", un possibile flusso di lavoro è il seguente

Sistema

Interfaccia

Premendounpulsantenell'interfacciasirichiama"Aggiungi commento" (che agisce sull'interfaccia per creare un campo di testo e un pulsante, se l'utente ha il permesso di farlo, altrimenti verrà visualizzato il messaggio di errore).

API

Tutti i metodi, non pubblici, nel back-end, prevedono il controllo delle autorizzazioni prima di eseguire il resto del codice. Quindi la query viene eseguita nel database per vedere se l'utente ha il permesso per l'azione "Commento".

database

Il database esegue una selezione nella tabella in cui sono registrati utenti e azioni. Risposta con un NULL (non c'è autorizzazione) o ID (permesso).

A questo punto possiamo supporre che:

  1. Qualsiasi azione privata (metodo esposto nell'API), dopo la convalida dei parametri di input, esegue il controllo di validità.
  2. La funzione nel back-end, per autorizzare l'esecuzione del codice richiede 2 parametri (minimo): UserID, ActionID;
  3. La funzione nel database (o la query da eseguire nel database) implica la lettura in una tabella che ha 3 campi (minimo): ID, ID utente, ID azione;

Gruppi

I gruppi dovrebbero (potrebbero) essere gestiti come preset di permesso. Ci sono tanti modi per gestire i permessi del gruppo. Probabilmente uno dei meno costosi in termini di sviluppo, è quello di creare una tabella per la gestione della relazione tra gruppi e utenti.

Conclusioni

Le strutture del nostro database saranno quindi le seguenti:

Utenti

  1. UserID
  2. Nome utente
  3. ...

Azioni

  1. ActionID
  2. ActionName
  3. ...

Permessi

  1. ID
  2. UserID
  3. ActionID

Gruppi

  1. ID
  2. GroupID
  3. UserID
risposta data 17.01.2014 - 23:42
fonte

Leggi altre domande sui tag