2016-11-21 6 views
3

Laravelセッションの作成と読み取りに問題があります。 私はセッション値を作成できますが、問題はデータにアクセスしています。 POSTリクエストでセッション値を作成すると、GETリクエストでセッション値にアクセスできません。ここで Laravel POSTリクエストに保存されたセッションデータを取得できません。

はdoLogin使用して、POSTメソッドここでは私のルート

Route::get('/', '[email protected]'); 
Route::get('/admin/dashboard', '[email protected]'); 
Route::post('/admin/login_admin', '[email protected]'); 
Route::post('/admin/login_test', '[email protected]'); 
Route::get('/admin/login', '[email protected]'); 

です:他のget要求セクションでセッション値にアクセスするための要求は、それがない場合

public function doLogin(Request $request){ 

    $email = $request->input("email"); 
    $password = $request->input("password"); 

    $checkerInfo = AdminGetLoginChecker($email, $password); 
    //if logged in 
    if($checkerInfo){ 
     $request->session()->put('loggedIn', '1'); 
     $request->session()->put('userId', $checkerInfo); 
     $request->session()->save(); 
     return response()->json([ 
      'success' => true, 
      'message' => 'logged In' 
     ]); 
    } 

    return response()->json([ 
     'success' => false, 
     'message' => 'Incorrect User Email, Password' 
    ]); 

} 

今問題がありますアクセスを許可する。

public function dashboard(Request $request) 
{ 

    $data = $request->session()->all(); 

    print_r($data); 

    return view('welcome', ['name' => 'James']); 
} 

ここでは、保存されたセッションデータはGETリクエストなので表示されません。今

POSTを使用して、任意の別の方法で要求を取得しようとするならば、それは私がGET要求された方法では、セッションデータにアクセスするにはどうすればよい

//it's a POST requset 
public function test(Request $request) 
{ 
    $data = $request->session()->all(); 
    print_r($data); 
} 

以前doLogin方法で保存されたデータを紹介依頼?事前に

おかげで、

更新:

データ

を掲示しながら、CSRFトークンの問題を回避するためにverifyCsrfToken middelwereのexceptsでエリアに " '/管理/ login_admin'" というURLを追加しますのでご注意ください
namespace App\Http\Middleware; 
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier; 

class VerifyCsrfToken extends BaseVerifier 
{ 
    /** 
    * The URIs that should be excluded from CSRF verification. 
    * 
    * @var array 
    */ 
    protected $except = [ 
     // 
     'url' => '/admin/login_admin' 
    ]; 
} 

答えて

0

のは、この

$input = $request->all(); 
// imagine you have Admin.php model 
$query = Admin::login($input['email'], $input['password'])->first(); 
if ($query) 
{ 
    Session::put('userId', $query->id); 
    Session::save(); 
    return "u're in"; 
} 
    else{ 
     return "User name or password is wrong"; 
    } 
のようにそれを試してみましょう

とあなたのtest機能に

return $request->session()->get('userId'); 
+0

号。 GET要求を使用しているメソッドは、セッション値を表示しません。 – FRabbi

0

は、なぜあなたは、手動でユーザーを認証しようとしていますか?

セッション操作では、「セッション」ファサードを使用します。

例えば:私はPOSTリクエストを経由してアクセスする方法のために働いて

Session::set('your_session_key', 'Session Value'); 
Session::save(); 
$yourSessionKey = Session::get('your_session_key'); 
+0

いいえ、私はPOSTリクエストを介してアクセスするメソッドのために働いています。 GET要求を使用しているメソッドは、セッション値を表示しません。また、質問を確認してください。問題を更新しました – FRabbi

関連する問題