Php 使用型号';中间件中的s功能?
我正在使用Laravel5.1并创建一个“管理”中间件来检查用户是否有权访问特定页面 我想这样做,但不起作用:Php 使用型号';中间件中的s功能?,php,laravel,Php,Laravel,我正在使用Laravel5.1并创建一个“管理”中间件来检查用户是否有权访问特定页面 我想这样做,但不起作用: public function handle($request, Closure $next) { if ($this->auth->guest() or !$this->auth->user()->isAdmin()) return redirect()->guest('auth/signin'); return
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);
}
有什么建议吗?我遗漏了什么吗?我不知道,但是如果你复制了你的代码
$此->身份验证->用户-()->isAdmin()
,这是一个错误。用户之后,您有了“
-()
”好的,谢谢您的帮助:
我有两个用户类(一个在App\User
中,另一个在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);
}
如果
dd($this->auth->user())
给你一个user
(它应该)的实例,你的if语句是错误的,因为默认情况下guest不能是管理员。您应该创建另一个中间件,其中check user是admin,并将其放在来宾中间件之后。复制代码时出错。谢谢你的帮助。