如果我有3个用户角色(主管,管理员和主持人):
我想允许所有方法,大多数方法由管理员,一种方法的主持人。
Inside InstitutionsController:
public function __construct() {
$this->middleware('head');
$this->middleware('admin')->only(['index', 'create']);
$this->middleware('moderator')->only(['index']);
}
通过这种方式,我不能以主持人或管理员的身份打开访问索引方法,就像头...
我该如何实现?
顺便说一句,我的中间件有:return !auth()->user()->isAdmin()?redirect()->home():$next($request)
等,另外2个
答案 0 :(得分:0)
您需要阅读middleware。它们是操纵HTTP请求和响应的类。请求进入,响应出现。一次处理一次。因此,如果您有一个检查角色的中间件,则它将检查该角色并在用户不具有该角色的情况下抛出“未经授权”的响应。
这样,检查用户是否可以做某事并不是中间件的工作(如您所见)。如果要检查用户是否可以做某事,请改为在资源周围使用policy。
Authorization文档提供了有关在Laravel应用程序中创建策略和授权操作的更多信息。