7

入力された URL がデータベース内の認証済みユーザーのスラッグと同じかどうかを確認しようとしています。したがって、ユーザーが example.com/user/bob-smith にアクセスし、実際に Bob Smith がログインしている場合、User テーブル内の彼のスラッグは bob-smith であるため、アプリケーションは Bob に続行を許可します。

ミドルウェアを登録していますが、登録すると

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 に答える