Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lưu trữ các quyền của ứng dụng trong cơ sở dữ liệu

Tôi sẽ làm theo cách này.

table name: permission
columns: id, permission_name

và sau đó tôi có thể chỉ định nhiều quyền cho người dùng bằng cách sử dụng nhiều đến nhiều bảng quan hệ

table name: user_permission
columns: permission_id, user_id

Thiết kế này sẽ cho phép tôi thêm nhiều quyền tùy thích và gán quyền đó cho bao nhiêu người dùng tùy ý.

Mặc dù thiết kế trên phù hợp với yêu cầu của bạn, nhưng tôi có phương pháp triển khai ACL trong ứng dụng của mình. Tôi đang đăng nó ở đây.

Phương pháp triển khai ACL của tôi như sau:

  1. Người dùng sẽ được chỉ định một vai trò (Quản trị viên, khách, nhân viên, công chúng)
  2. Một vai trò sẽ có một hoặc nhiều quyền được chỉ định cho chúng (user_write, user_modify, report_read), v.v.
  3. Quyền dành cho Người dùng sẽ được kế thừa từ vai trò của họ
  4. Người dùng có thể được chỉ định với quyền thủ công ngoài quyền được kế thừa từ vai trò.

Để làm điều này, tôi đã đưa ra thiết kế cơ sở dữ liệu sau.

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

Điều này cho phép tôi kiểm soát nhiều hơn ACL. Tôi có thể cho phép các cấp trên tự mình chỉ định quyền, v.v. Như tôi đã nói, đây chỉ là để cung cấp cho bạn ý tưởng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao lỗi xảy ra khi tôi gửi nhiều truy vấn vào mysqli_query?

  2. Đối với cài đặt mysql homebrew, my.cnf ở đâu?

  3. Sử dụng SQL JOIN và COUNT

  4. Bạn muốn đề xuất mẫu thiết kế phiên bản nào

  5. Cách lặp qua tập kết quả mysql