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

Menerapkan izin berdasarkan reputasi

user_table
id, etc

permission table
id, user_id, permission_type

dengan struktur ini, setiap pengguna dapat memiliki beberapa jenis izin yang terkait dengan akun mereka, satu untuk setiap rangkaian fitur yang dapat memiliki akses ke. Anda tidak perlu mengubah struktur tabel untuk menambahkan jenis izin baru.

untuk melangkah lebih jauh, Anda dapat membuat setiap jenis izin menjadi bilangan biner. dengan cara ini Anda dapat membuat satu set izin diwakili oleh satu bilangan bulat dengan menggunakan operator bitwise.

misalnya jika Anda memiliki konstanta

PERMISSION_CHANGE_PERMISSIONS = bindec('001') = 1
PERMISSION_MAKE_CHANGES = bindec('010') = 2
PERMISSION_ACCEPT_CHANGES = bindec('100') = 4

anda dapat menggabungkan nilai-nilai ini menjadi satu bilangan bulat menggunakan operator bitwise "|"

(PERMISSION_CHANGE_PERMISSIONS | PERMISSION_MAKE_CHANGES) = bindec('011') = 3 = $users_combined_permissions

kemudian untuk memeriksa apakah mereka memiliki izin khusus, gunakan operator bitwise "&"

($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true

jika Anda melakukannya, Anda hanya memerlukan satu data db untuk setiap set izin.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lexing SQL parsial di C#

  2. Bagaimana cara melakukan Pemodelan Warisan dalam Basis Data Relasional?

  3. Permintaan lambat Mysql:INNER JOIN + ORDER BY menyebabkan filesort

  4. Impor ekspor baris perintah database mysql supercepat

  5. Sisipkan beberapa baris dengan satu kueri MySQL