在中间件中使用模型的功能?

时间:2016-01-22 13:19:25

标签: php laravel

我正在使用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);
}

有什么建议吗?我错过了什么吗?

2 个答案:

答案 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);
}