7

我正在尝试检查输入的 URL 是否与数据库中经过身份验证的用户 slug 相同。因此,如果用户访问 example.com/user/bob-smith 并且实际上是 Bob Smith 登录,则应用程序将让 Bob 继续,因为他在 User 表中的 slug 是 bob-smith。

我已经注册了中间件,但是当我这样做时

public function handle($request, Closure $next)
    {
        if($id != Auth::user()->slug){
            return 'This is not your page';
        }
        else{
            return $next($request);
        }
    }

我明白了

找不到类“App\Http\Middleware\Auth”

我不确定如何在中间件中使用它。任何人都可以帮忙吗?

4

1 回答 1

11

这很容易。看起来您没有为Auth外观导入名称空间。

因此要么添加

<?php namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth; // <- import the namespace

class YourMiddleware {
    ...
}

在类声明之上或使用完全限定的类名内联

if ($id != \Illuminate\Support\Facades\Auth::user()->slug) { 

Guard或者,您可以在构造函数中注入实例

<?php namespace App\Http\Middleware;

use Closure;
use Illuminate\Contracts\Auth\Guard;

class YourMiddleware {

    protected $auth;

    public function __construct(Guard $auth)
    {
        $this->auth = $auth;
    }

    public function handle($request, Closure $next) 
    {
        ...
        if ($id != $this->auth->user()->slug) {
        ...
    }
}
于 2015-04-22T04:40:25.583 回答