2016-08-15 15 views
0

私はカスタムミドルウェアとカスタム認証をセッションチェックに使用していましたが、$ request-> getSession()またはSession :: get()が機能しなくなっています。 (ログイン後)、ユーザコントローラで は、私が使用している:Laravelセッションがカスタムミドルウェアで動作しない

public function __construct() 
{ 
    $this->middleware('custom_authenticate'); 
} 

と(認証を使用していない)カスタム認証コントローラでは、私が使用している:

Session::put('user_id', $user->id); 
echo ">> " . Session::get('user_id'); // this gives the value stored in user_id 

をここに私のカスタムミドルウェアです:

ミドルウェアで
<?php 

namespace App\Http\Middleware; 

use Closure; 
use Illuminate\Support\Facades\Session; 

class CustomAuthenticate 
{ 
public function handle($request, Closure $next) 
{ 
    $userId = Session::get('user_id'); 

    if (!isset($userId)) { 
     if ($request->ajax()) { 
      return response('Unauthorized.', 401); 
     } else { 
      return redirect()->guest('login'); 
     } 
    } 

    return $next($request); 
} 
} 

、私はセッションから何かを得ることはありません::(取得)

ここでは

Kernel.php

protected $routeMiddleware = [ 
    'auth' => \App\Http\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
    'custom_authenticate' => \App\Http\Middleware\CustomAuthenticate::class 
]; 
+0

を次のようにあなたもあなたのミドルウェア・アクションを変更することができます。私は通常$ userIdを取得します。うーん.. – KmasterYC

答えて

0

はあなたのルートにそのミドルウェアをグループ化しているチェックしています。

Route::group(['middleware' => 'custom_authenticate'], function() { 
     //list of all controllers action 
}); 

私は上記のコードで自分のアプリケーションでテスト

public function handle($request, Closure $next) 
{ 
    if(session()->has('user_id')){ 
     if ($request->ajax()) { 
      return response('Unauthorized.', 401); 
     } else { 
      return redirect()->guest('login'); 
     } 
    } 

    return $next($request); 

} 
関連する問題