我正在使用Laravel 5.1并创建一个“管理”中间件来检查用户是否有权访问特定页面。
我想这样做,但它不起作用:
public function handle($request, Closure $next)
{
if ($this->auth->guest() or !$this->auth->user()->isAdmin())
return redirect()->guest('auth/signin');
return $next($request);
}
所以我实现了这样的目标,但这似乎很奇怪:
public function handle($request, Closure $next)
{
if ($this->auth->guest() or ! User::find($this->auth->user()->id)->isAdmin())
return redirect()->guest('auth/signin');
return $next($request);
}
有什么建议吗?我错过了什么吗?
答案 0 :(得分:0)
我不知道,但是如果您复制了代码
!$this->auth->user-()->isAdmin()
,是错误。在用户之后,您有“-()
”
答案 1 :(得分:0)
好的,谢谢你的帮助:
我有两个User类(一个在App\User
和一个ine App\Models\User
)。我在config/auth.php
中更改了配置,将模型设置为App\Models\User::class
,并删除了安装Laravel时的默认用户模型。所以现在isAdmin()函数可以工作。
正如xAoc告诉我的那样,代码现在如下:
public function handle($request, Closure $next)
{
if (!$this->auth->user()->isAdmin())
return redirect()->guest('auth/signin');
return $next($request);
}