Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menyimpan izin aplikasi dalam database

Saya akan melakukannya dengan cara ini.

table name: permission
columns: id, permission_name

dan kemudian saya dapat menetapkan beberapa izin kepada pengguna menggunakan tabel hubungan banyak ke banyak

table name: user_permission
columns: permission_id, user_id

Desain ini akan memungkinkan saya untuk menambahkan izin sebanyak yang saya inginkan, dan menetapkannya ke pengguna sebanyak yang saya inginkan.

Sementara desain di atas sesuai dengan kebutuhan Anda, saya memiliki metode saya sendiri untuk menerapkan ACL dalam aplikasi saya. Saya mempostingnya di sini.

Metode implementasi ACL saya seperti ini:

  1. Pengguna akan diberi peran (Admin, tamu, staf, publik)
  2. Sebuah peran akan memiliki satu atau banyak izin yang ditetapkan padanya (user_write, user_modify, report_read) dll.
  3. Izin untuk Pengguna akan diwarisi dari perannya
  4. Pengguna dapat ditetapkan dengan izin manual selain izin yang diwarisi dari peran.

Untuk melakukan ini, saya telah membuat desain database berikut.

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

Ini memberi saya lebih banyak kontrol atas ACL. Saya dapat mengizinkan superadmin untuk memberikan izin sendiri, dan seterusnya. Seperti yang saya katakan, ini hanya untuk memberi Anda ide.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengunggah gambar ke database MySQL menggunakan kode PHP

  2. Transaksi MySQL dengan aplikasi akuntansi

  3. ANTARA kueri menggunakan JDBC dengan MySQL

  4. SELECT yang mengembalikan daftar nilai yang tidak muncul di baris mana pun

  5. Bagaimana cara mengisi tampilan grid dengan mysql?