我即将为我的项目中的用户定义权限。我查看了关于ACL,角色和权限的laracasts视频。 我有个疑问。我是否需要普通用户的角色? 我的意思是,在我的项目中,用户应该能够创建/更新/删除自己的帖子,他应该能够评论他自己的帖子和其他用户的帖子,并删除他自己帖子上留下的帖子和帖子。 关键是:我真的需要为这种权限定义角色吗?我不应该只定义一些政策,比如可以/不能发布/更新/删除等,只定义管理员的角色?
答案 0 :(得分:0)
您不一定需要功能齐全,功能强大的角色/ ACL系统,但如果您将管理员和基本用户都存储在同一个表中,那么您确实需要一些区分它们。这可以像在角色字段一样简单,作为用户表格中的字符串,例如Admin
或Basic
,甚至是布尔is_admin
字段。
这使您能够实施策略或中间件以阻止基本用户访问管理面板,并且您可以进行权限检查以确保用户无法更新其他用户的帖子等。
如果你没有预见到将来需要更复杂的东西那么这就足够了。但是,随着您的应用程序变得更加成熟,您可能希望拥有更高级的角色系统,例如,用户需要具有多个角色。
答案 1 :(得分:0)
您不一定需要为每个用户定义角色......
但是,您可以“硬编码”并对某些访问做出一些假设,这可能是一个好主意......
例如:
如果您认为登录的任何人都可以发帖并且可以编辑自己的帖子,那么您无需为用户说“can_make_post”,只需检查“如果用户已登录”在,然后让他们发表一个帖子“
然后,如果你说,有一个管理区域,那么你可以去“如果用户a有角色 使用'admin_access'权限,然后允许访问“
拥有一切角色是一个好主意,因为它允许更多的自定义,但是,如果您不需要自定义,那么您可能只需要做出一些假设,如上所述。
答案 2 :(得分:0)
我认为这是laravel中不带软件包的最佳授权教程,您可以看到我推荐的https://www.codechief.org/article/user-roles-and-permissions-tutorial-in-laravel-without-packages