2016-11-12 8 views
0

私がログインしていることを確認し、管理者であるかどうかを確認するミドルウェアのユーザー名を確認して、特定のページへのアクセスを制限する必要があります。ユーザー名を取得するにはどうすればいいですか?Laravel Middlewareのユーザー名を確認してください。

Auth :: user()を使用すると、別のミドルウェアからエラーが表示されます。

ErrorException in VerifyCsrfToken.php line 136: 
Trying to get property of non-object 

ルート

Route::get('admin', ['middleware' => 'admin', function() { 
    echo "You're an admin!"; 
}]); 

ミドルウェア

class VerifyAdmin 
{ 
    public function handle($request, Closure $next, $guard = null) 
    { 
      if (Auth::user()->username == "enayet123") 
       return $next($request); 
    } 
} 
+0

ルートファイルを表示できますか? –

+0

私は実際にルートファイルがこれに影響を与える理由を理解していませんか? –

+1

あなたのlaravelバージョンは何ですか? –

答えて

0

あなたはあなたの条件はので、次のミドルウェアが要求を持つことができます失敗しても

return $next($request); 

を返却する必要があります。あなたが条件付きの外でそれを動かすなら、あなたの問題を解決するはずです。

あなたのコードは次のようになります。

class VerifyAdmin 
{ 
    public function handle($request, Closure $next, $guard = null) 
    { 
      if (Auth::user()->username == "enayet123") { 
       // Do the thing you want ... (return or redirect to somewhere else) 
       redirect()->route('homepage'); 
      } 
      return $next($request); 
    } 
} 

あなたはいつもreturn $next($request)必要であるなど、ユーザー名などのユーザーの詳細を取得するためには、特定のミドルウェア

+0

ミドルウェアは、ユーザー名が「enayet123」の場合、次のミドルウェアにリクエストを渡すことを意図しています。チェックが失敗した場合、ユーザーはホームページにリダイレクトする必要があります '/' –

+0

@EnayetHussain - 上記の更新されたコードを確認して実装してください。問題を解決するはずです –

0

からコード/要求を渡す必要があります/あなたは$要求 - >ユーザー()ではなく認証::ユーザーを使用する必要がある電子メール()

ユーザー場合は、その後、確認する必要がありますユーザーモデル内にメソッドを作成してミドルウェアで呼び出すことで管理者です

class VerifyAdmin 
{ 
    public function handle($request, Closure $next, $guard = null) 
    { 
     $user = $request->user(); 
     if ($user && $user->isAdmin()) { 
      return $next($request); 
     } 
     return redirect('/'); 
    } 
} 
関連する問題