0

protected $headers関数を使用して値を割り当てるクラスに変数があります

public function actionLogIn()
{
$userCode = Input::get('username');
$password = Input::get('password'); 
$loginData = array(
    'code' => $userCode,
    'passkey' => $password
);
$loginData = json_encode($loginData);   
$this->headers = Auth::login($loginData);//Modified login method
if(! is_null($this->headers))
{
    return View::make('forms.welcome')->with('title', 'Welcome');
}else{
    echo "Invalid access!";
}
}

そして、それを使用するprint_r($this->headers);と必要な値が正常に出力されますが$this->headers、関数を使用してアクセスしようとすると:

public function actionLogOut()
{
    if(is_null($this->headers)){
        echo "is null", "\n";
    }//for checking only
    Auth::logout($this->headers);
}

$this->headers無効です。何が問題なのですか? また$headers、実際には配列です。ありがとう!

4

1 に答える 1

0

リクエストごとに新しいコントローラ インスタンスが作成されます。つまり、$this に情報を保存しても、ユーザーが新しいページを要求したときにはそこにはありません。

あなたがしたいのは、リクエスト間で変更されないものにデータを保存することです-セッションまたはCookieのいずれかです。

セッションでは、次のようになります: (警告 - テストされていないコード)

public function actionLogIn() {
  ...
  $loginData = json_encode($loginData);   
  $user = Auth::login($loginData);
  if ($user) {
    Session::put('logged_in_user',$user);
    return View::make('forms.welcome')->with('title', 'Welcome');
  }else{
    echo "Invalid access!";
  }
}

public function actionLogOut() {
  if(Session::has('logged_in_user'){
    $user = Session::get('logged_in_user');
    Auth::logout($user);
    Session::forget('logged_in_user');
  } else {
    echo "is null\n";
  }
}

Laravel のセッションの詳細については、http://four.laravel.com/docs/session をご覧ください

于 2013-09-20T19:14:17.193 に答える