2017-07-12 8 views
0

中:laravel 5.4:カントのアクセス認証::ユーザー()私はこのような何かを行うために使用されるすべての方法でログインしているユーザーにアクセスするために必要なコントローラでLaravelの以前のバージョンでは、__constructメソッド

class DashboardController extends Controller 
{ 
    private $user ; 
    function __construct(Request $request) 
    { 
     $this->middleware('auth'); 
     $this->user = \Auth::user(); 
    } 

    function func_1(){ 
     $objects = Objects::where('user_id' , $this->user->id)->get(); 
    } 
    function func_2(){ 
     $objects = Objects::where('user_id' , $this->user->id)->get(); 
    } 
    function func_3(){ 
     $objects = Objects::where('user_id' , $this->user->id)->get(); 
    } 
私はデフォルトの構文 \Auth::user()が好きではありませんが、5.4にアップグレードした後、これはもう動作しませんし、私はそれはしかし、他の方法ではうまく動作し $this->user

からnullを取得する主な理由

。基本的には\Auth::user()__constructメソッドで返しますが、他の機能では正常に動作します。 docとして

+0

[$ request-> sessionの複製がLaravel 5.3のリソースコントローラで動作しませんでした](https://stackoverflow.com/questions/40363009/request-session-didnt-work-in) -laravel-5-3-resource-controller) – OuailB

答えて

2

は言う:

Laravelの以前のバージョンでは、あなたは、コントローラのコンストラクタで認証されたユーザをセッション変数にアクセスしたり、 ことができます。これは であり、フレームワークの明示的な機能ではありませんでした。 Laravel 5.3では、ミドルウェアがまだ実行されていないため、コントローラのコンストラクタでセッションまたは認証されたユーザーにアクセスすることはできません。

だから、このてみてください:あなたはあなたのnamespace.See以下の例を使用すると、あなたのクラスをロードする前に認証方法を定義する必要があり

public function __construct() 
{ 
    $this->middleware('auth'); 
    $this->middleware(function ($request, $next) { 
     $this->user = Auth::user(); 

     return $next($request); 
    }); 
} 
0

を:

namespace App\Http\Controllers\Admin; 

use Illuminate\Support\Facades\Input; 
use Auth; 

class DashboardController extends Controller 
{ 
    private $user ; 
    function __construct(Request $request) 
    { 
     $this->middleware('auth'); 
     $this->user = Auth::user(); 
    } 

    function func_1(){ 
     $objects = Objects::where('user_id' , $this->user->id)->get(); 
    } 
    function func_2(){ 
     $objects = Objects::where('user_id' , $this->user->id)->get(); 
    } 
    function func_3(){ 
     $objects = Objects::where('user_id' , $this->user->id)->get(); 
    } 

とすることができます後必要に応じてキャッシュをクリーニングしてください。 php artisan config:cache

関連する問題