如何根据 laravel 中的用户角色管理控制器方法?

Posted

技术标签:

【中文标题】如何根据 laravel 中的用户角色管理控制器方法?【英文标题】:How can i manage controller methods as per user role in laravel? 【发布时间】:2017-08-30 17:16:22 【问题描述】:
public function __construct()

    $this->middleware('roles:Author')->only(['index','show','create']);
    $this->middleware('roles:User')->only(['index','show']);

在我的控制器中,我希望根据用户角色访问方法,例如,如果用户角色是管理员,那么他必须访问控制器的所有方法,如果用户角色是作者,那么他可以访问索引、创建和显示方法以及如果角色是用户,那么他只能访问索引和显示方法。

【问题讨论】:

查看 laravel 文档:laravel.com/docs/5.4/authorization 您是否使用包进行角色管理? @IvankaTodorova 不,我为用户角色创建数据透视表并检查模型中的角色。 【参考方案1】:

你可以看看Gates(docs)。

在你的App\Providers\AuthServiceProvider 添加:

Gate::define('create-post', function ($user) 
    return $user->isAuthor(); //Here you should check the users role
);

然后在你的控制器方法create():

if (Gate::allows('create-post')) 
    // The current user can create posts...

另外两种方法:index()show() 对这两个角色都可用,因此无需执行任何操作。

【讨论】:

感谢新教,但我必须在控制器的每个方法中添加这个条件,我想从构造函数管理,所以你知道从构造函数管理控制器的任何想法。

以上是关于如何根据 laravel 中的用户角色管理控制器方法?的主要内容,如果未能解决你的问题,请参考以下文章

根据用户的角色和状态登录laravel

如何通过 laravel 5.6 中的角色保护用户管理区域?

我如何在 laravel 中为 spatie 包(ACL 管理)中的其他角色分配用户列表权限?

Laravel 4 过滤不同角色的组路由

Laravel Print 根据用户的权限选择选项

在 Laravel 5.5 中根据用户角色应用全局范围