【发布时间】:2019-05-17 01:23:29
【问题描述】:
在 laravel 应用程序中,我有 users、roles 和 permissions。角色附加到用户,权限附加到角色。
用户:
id | name | email
______________________
1 | saba | saba@gmail.com
2 | nika | nika@gmail.com
3 | gio | gio@gmail.com
角色:
id | name
______________________
1 | Admin
2 | Client
3 | Service_provider
权限:
id | name
______________________
1 | add_admin
2 | delete_admin
3 | approve_order
4 | delete_order
用户角色:
id | user_id | role_id
______________________
1 | 1 | 1
2 | 2 | 2
角色权限:
id | role_id | permission_id
____________________________
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
在此示例中,user 和 id 1 是 Admin,他可以是 add_admin、delete_admin、approve_order
但我需要不同的管理员拥有不同的权限。在这个结构中,如果我将admin 角色附加到user 和id 2,他的权限将与user 和id 1 的权限相同.
我需要不同的管理员有不同的权限,不同的客户有不同的权限。
有一个小场景:
假设有两个用户 A 和 B,他们想注册为客户,所以当他们注册时,我会为他们附加客户角色。他们具有相同的权限,但如果用户 A 将上传他的文档,我需要将新权限附加给用户 A,而不是用户 B。
我的解决方案是创建一个新表,并在其中为用户附加权限
用户权限:
Id | user_id | permission_id
____________________________
1 | 1 | 4
所以用户的所有权限将是他的角色权限+我上面描述的表中的权限
我需要你们帮助我决定这个解决方案是好是坏,或者还有其他更好的方法吗? (这类问题的最佳做法是什么?)
【问题讨论】:
标签: mysql laravel database-design role-based-access-control