Laravel角色和权限

Laravel角色和权限,laravel,Laravel,我是Laravel的新手,我正在尝试基于角色构建应用程序,但在我的情况下,用户只能有一个角色(用户和角色之间没有透视表),我们可以创建我们喜欢的新角色(为一个角色分配多个权限)。有什么帮助吗?非常感谢所以这里有一种方法我会这么做 您需要两张桌子: 一个我称之为“排名”的表格,里面可以有关于排名本身的所有信息: 当然,它的id也是: 是行政级别吗?(所有权限) 它叫什么名字 一个我称之为“等级能力”的表格,在里面你可以了解等级的所有功能 因此,它将有三列:id、rank_id和能力名称 您需要

我是Laravel的新手,我正在尝试基于角色构建应用程序,但在我的情况下,用户只能有一个角色(用户和角色之间没有透视表),我们可以创建我们喜欢的新角色(为一个角色分配多个权限)。有什么帮助吗?非常感谢

所以这里有一种方法我会这么做

您需要两张桌子:

  • 一个我称之为“排名”的表格,里面可以有关于排名本身的所有信息:
    当然,它的id也是:
    是行政级别吗?(所有权限)
    它叫什么名字

  • 一个我称之为“等级能力”的表格,在里面你可以了解等级的所有功能
    因此,它将有三列:id、rank_id和能力名称

您需要将rank_id放入users表中

注意:如果你想做得很好,你可以有一个包含所有可能能力的表“能力”,你可以引用他们的ID而不是名字

那么它是如何工作的呢

因此,您将有三种模型:

  • 使用者
  • 等级
  • 可分级性
在您的用户模型内部,您将拥有一个与排名模型的归属关系(称之为排名) 在等级模型内部,您将与等级能力模型有很多关系(称之为等级能力)

我想我们现在对数据库结构已经很满意了,让我们开始允许做一些事情吧

因此,当然,在需要登录的地方,您可以使用auth中间件完美地完成登录

然后,要处理权限本身,有几种方法,我推荐一种

步骤1:

为某些操作创建策略,例如,如果您有帖子,则可以创建后期策略()

例如,如果您想要一个权限,以便用户可以编辑所有帖子,那么您应该在该PostPolicy中有一个更新方法

public function update(User $user, Post $post)
{
    return $user->hasPermission('post.update'); // You can also add other permissions for example if the post belongs to your user I'd add || $post->user_id == $user->id
}
我会做那样的事

然后,您必须创建hasPermission方法

因此,在您的用户模型中,您可以放置如下内容:

public function hasPermission($permission){
    if(!$this->relationLoaded('rank')){
        $this->load('rank', 'rank.ranks_abilities');
    }
    if(!$this->rank){
        return false;// If the user has no rank, return false
    }
    foreach($this->rank->rank_abilities as $ability){
        if($permission === $ability->name){
            return true;// If the user has the permission
        }
    }
    return false;
}
在这里,方法完成了

最后一步,您可以使用这里列出的所有方法来避免用户做他不能做的事情

就我个人而言,我会做一个FormRequest,并用它来处理授权()


我希望澄清一下,如果您对设置自定义用户角色和权限还有任何疑问,请继续

,您可以尝试


这是一本关于如何在Laravel项目中设置角色和权限的完整指南。

err,您尝试了什么。。?还有,有什么反对使用软件包的理由吗?如果你不介意,你可以从现有的软件包中学习。。。