Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przechowywanie uprawnień aplikacji w bazie danych

Zrobiłbym to w ten sposób.

table name: permission
columns: id, permission_name

a następnie mogę przypisać użytkownikowi wiele uprawnień, korzystając z tabeli relacji wiele do wielu

table name: user_permission
columns: permission_id, user_id

Ten projekt pozwoli mi dodać tyle uprawnień, ile chcę i przypisać je do dowolnej liczby użytkowników.

Chociaż powyższy projekt jest zgodny z twoimi wymaganiami, mam własną metodę implementacji ACL w mojej aplikacji. Publikuję to tutaj.

Moja metoda implementacji ACL wygląda następująco:

  1. Użytkownikowi zostanie przypisana rola (administrator, gość, personel, publiczny)
  2. Rola będzie miała przypisane jedno lub wiele uprawnień (user_write, user_modify, report_read) itp.
  3. Uprawnienie dla Użytkownika zostanie odziedziczone z roli, którą on/ona jest
  4. Użytkownikowi można przypisać uprawnienia ręczne oprócz uprawnień odziedziczonych z roli.

W tym celu opracowałem następujący projekt bazy danych.

role
I store the role name here 
+----------+
| Field    |
+----------+
| id       |
| role_name |
+----------+

permission:
I store the permission name and key here 
Permission name is for displaying to user.
Permission key is for determining the permission.
+----------------+
| Field          |
+----------------+
| id             |
| permission_name |
| permission_key  |
+----------------+

role_permission
I assign permission to role here 
+---------------+
| Field         |
+---------------+
| id            |
| role_id       |
| permission_id |
+---------------+

user_role
I assign role to the user here 
+---------------+
| Field         |
+---------------+
| id            |
| user_id       |
| role_id       |
+---------------+

user_permission
I store the manual permission I may allow for the user here 
+---------------+
| Field         |
+---------------+
| id            |
| user_id       |
| permission_id |
+---------------+

Daje mi to większą kontrolę nad listą ACL. Mogę pozwolić superadministratorom na samodzielne przypisywanie uprawnień i tak dalej. Jak powiedziałem, to tylko po to, by dać ci pomysł.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaktualizuj wiersz danymi z innego wiersza w tej samej tabeli

  2. Napraw „BŁĄD 1136 (21S01):Liczba kolumn nie odpowiada liczbie wartości w wierszu 2” podczas korzystania z instrukcji VALUES w MySQL

  3. mysql_real_escape_string i array_map zwraca puste ciągi?

  4. Przekroczono limit czasu oczekiwania na blokadę; spróbuj zrestartować transakcję, mimo że nie używam transakcji

  5. Dlaczego to zapytanie sql nie zwraca żadnych wyników porównujących liczby zmiennoprzecinkowe?