如何根据 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 5.6 中的角色保护用户管理区域?