2015-12-30 10 views
10

Sentinelを使用してLaravel 5.2で簡単な認証システムを実装しています。Laravel 5.2ログインセッションが維持されない

// Route : /login 
$success = Sentinel::authenticate(array(
    'email' => $email, 
    'password' => $password, 
)); 

echo $success ? 'Login success' : 'Login failed'; 

したがって、上記のコードは認証コードの後に​​Login successを出力します。しかし、ログイン状態は他の要求に永続化されていません。つまり、他のリクエストから認証ステータスをチェックすると、私はログインしていないと言います!

// Route : test-login 
echo \Sentinel::check() ? 'User is logged in' : 'User is not logged in'; 

私も\Auth::attemptを使用してdefautのlaravelのAUTHENCATIONを実装しようとしています。しかし、それも同じことを与えます。

これに関するお手伝いをさせていただきます。

+0

Laravel 5.2の新プロジェクトですか? 'routes.php'ファイルを表示できますか? –

+0

'web'ミドルウェアグループの' login'と 'test-login'ルートはありますか? – patricus

+0

@MarcinNabiałek:これは新鮮なlaravel 5.2プロジェクトです。問題があると思います。 @patricusのように、私のルートは 'web'ミドルウェアの中にはありませんでした。すべてのルートを 'web'ミドルウェアに移動した後で動作しました – Nauphal

答えて

21

Laravel 5.2では、セッションを動作させたくないすべてのルートにwebグループミドルウェアを適用する必要があります。これはLaravel 5.1の大きな変更です。

デフォルトのroutes.phpのファイルは、現時点では、このようになりますhttps://laravel.com/docs/5.2/routing#basic-routing

をご覧ください:

Route::group(['middleware' => ['web']], function() { 
    // here you should put your routes 
}); 

EDIT

あなたがに middlewareGroupsプロパティに直接 https://github.com/laravel/laravel/blob/master/app/Http/Kernel.phpでも見ることができ

webグループミドルウェアのために発注されたミドルウェアを知る

+3

Laravelは疲れています。これらの新しいバージョンは、これまで以上に複雑です。 – manix

+1

@manix私は同意しない。あなたは新しいバージョンのソフトウェアから何を期待していますか?おそらく新しい関数であり、新しい関数が追加されたときには常にアプリケーションに複雑さを加える必要があります。しかし、私は同意することができます、そのドキュメントは詳細な説明が欠けているので、時にはそれがどのように動作しているのか把握するのは難しいです。また、機能が正常に機能する場合は、古いバージョンのLaravelを使用することもできます。 –

+3

これは移行ガイドに書き留めておく必要があります。 – dschu

関連する問題