sql >> Database teknologi >  >> RDS >> Mysql

Lagring af applikationstilladelser i en database

Jeg ville gøre det på denne måde.

table name: permission
columns: id, permission_name

og så kan jeg tildele flere tilladelser til brugeren ved hjælp af en mange til mange relationstabel

table name: user_permission
columns: permission_id, user_id

Dette design giver mig mulighed for at tilføje så mange tilladelser, som jeg vil, og tildele det til så mange brugere, som jeg vil.

Mens ovenstående design passer til dit krav, har jeg min egen metode til at implementere ACL i min ansøgning. Jeg poster det her.

Min metode til implementering af ACL går sådan her:

  1. Brugeren vil blive tildelt en rolle (administrator, gæst, personale, offentlig)
  2. En rolle vil have en eller flere tilladelser tildelt dem (user_write, user_modify, report_read) osv.
  3. Tilladelse til brugeren vil blive arvet fra den rolle, som han/hun er til
  4. Brugeren kan tildeles manuel tilladelse bortset fra den tilladelse, der er arvet fra rollen.

For at gøre dette har jeg fundet på følgende databasedesign.

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 |
+---------------+

Dette giver mig mere kontrol over ACL. Jeg kan tillade superadministratorer selv at tildele tilladelse og så videre. Som sagt er dette bare for at give dig ideen.



  1. SQL-udvikler 4.1.2

  2. Hvad knytter Hibernate en boolesk datatype til, når der som standard bruges en Oracle-database?

  3. Oracle Bulk Collect-eksempel ved hjælp af Cursor Rowtype Type Object

  4. Slet data fra mysql og angular