【发布时间】:2018-05-16 00:51:09
【问题描述】:
我想知道我是否可以在 Laravel Route 中做到这一点。假设我有Admin、Premium 和User(也可以使用Auth 登录)中间件。另外,我有这样的控制器:index,create,edit,delete,我希望Admin能够做所有这些事情,但Premium只能访问@ 987654331@ 方法和User 无法访问此控制器中的任何内容(他可以访问另一个控制器)。我知道我可以像这样使用except 或only 中间件方法:
public function __construct()
{
$this->middleware('premium')->only('index');
$this->middleware('admin');
// or maybe $this->middleware('admin')->except('index');
}
但是当我尝试将这两个中间件放在__construct 方法中时,它们会开始相互冲突,这是有道理的,因为索引方法可以被Premium Member 访问,但不能被Admin 访问本身。顺便说一句,我的中间件只是检查:
if (Auth::check()) {
if (Auth::user()->role == 'Admin') {
return $next($request);
}
}
return redirect('/home');
那么,回到我的问题,我可以有 OR 中间件,这样我就可以避免来自多个中间件的冲突(当它们在同一个控制器构造函数中编写时必须是 AND 条件)?
非常感谢。
【问题讨论】:
标签: php laravel if-statement boolean middleware