2017-11-26 10 views
0

でFALSEを返す:センチネル::チェック()は、常にこれが私のルートであるミドルウェア

Route::group(['middleware' => ['web']], function() { 
    Route::get('/xx', 'xx\[email protected]'); 

これはKernel.phpで私の変形例である:

protected $middlewareGroups = [ 
    'web' => [ 
    \Keevitaja\Linguist\LocalizeUrls::class, 

LocalizeUrls.php:

public function handle($request, Closure $next) 
    { 
     if ($this->linguist->hasDefaultSlug() && $this->linguist->isDefaultDenied()) { 
      abort(404); 
     } 

     if (Sentinel::check()) 
     { 
      dd("logged in"); 
     } 

     dd("NOT logged in"); 

認証とローカライズにSentinelとLinguistを使用しています。私は、Userモデルから「system_language」を取得したいと思い :ユーザーがログインしているかどうかを確認し、彼がある場合、私はDBからの彼の好みの言語を取得し、言語学者に渡ししたいと思います:

$this->linguist->localize('fr'); 

残念ながら、Sentinel:check()はこのミドルウェアで常にFALSEを返します。私自身のミドルウェアではうまくいきます。

正しいファクト・オブ・センティネルを使用しています。$sentinel = Sentinel::findById(1);が有効な結果を返すためです。

答えて

1

この問題は、Kernel.php $middlewareGroupsの中で、\Keevitaja\Linguist\LocalizeUrls::classが最初の位置にあったために発生しました。

関連する問題