2017-03-24 12 views
1

私がしたいことは、メソッドを実行する前にユーザのアクティベーションステータスを取得し、アクティブでない場合にリダイレクトすることです。私のコードは次のとおりです。laravelコントローラコンストラクタにログインする方法

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\User; 

class HomeController extends BaseController 
{ 
    public function __construct(){ 
     parent::__CONSTRUCT(); 
     $this->middleware('auth'); 
     //SEE IF ACTIVE, something like auth()->user()->active 
} 

    public function home() 
    { 
     return redirect('/home'); 
    } 
} 

コンストラクタの最後の行のコメントを見て、どうすればいいですか?

+0

これはちょうどhttps://laravel.com/docs/5.4/authenticationで説明されていますか? – Loko

+0

@Lokoメソッドで認証されたユーザーを取得できました。コンストラクタでは機能しません。メソッドを実行する前に、認証されたユーザーがアクティブであるかどうかを確認します。理にかなっている? – Mav

答えて

0

5.3以降では、コントローラコンストラクタのセッション情報に直接アクセスすることはできません。ただし、コントローラのコンストラクタで直接Closureベースのミドルウェアを定義することはできます。詳細情報はdocs

public function __construct() 
    { 
     $this->middleware('auth'); 
     $this->middleware(function ($request, $next) { 
      if(Auth::user()->active) { 
       return Redirect::route('activate'); 
      }  
      return $next($request); 
     }); 
    } 
関連する問題