2016-06-21 11 views
1

私は私のコード(コードはコントローラーにあります)ですproblem.hereに会った:セッションは本当にフラッシュされません、なぜですか?

私がやったこと
public function login(Request $request){ 

    $name = $request->name; 
    $pwmd5 = md5($request->pw); 
    $result= user::select(DB::raw("CASE WHEN password ='$pwmd5' THEN 1 ELSE 0 END AS passwrod_matches,id,name")) 
    ->where('name',$name) 
    ->first(); 

    if ($result == null) { 
     return returnFormat('account wrong', false); 
    } elseif ($result['password_matches'] == '0') { 
     return returnFormat('pw wrong', false); 
    }; 
    $result['password_status'] = '1'; 
    static::saveUser($result); 
    return returnFormat($result); 
    } 

    static public function saveUser(&$user){ 

    if(!is_array($user)){ 
     $user->toArray(); 
    } 
    $user['sid'] = Session::getId(); 
    session(['user'=>$user]); 

    } 

public function checkUser(Request $request){ 

    $user = session('user'); 
    return $user; 

} 

public function logout(Request $request){ 


    session()->flush(); 
    return returnFormat(true); 

} 

は、ログイン()である - >チェックユーザー() - (>ログアウト)。 しかし、別のアカウントでlogin()を実行すると、セッションIDがまったく同じであることがわかりました。なぜですか?セッションを破壊する

+0

なぜそれが変更する必要がありますか?そして、なぜあなたはその物に '\ Auth'を使わないのですか? – tkausl

+0

OK。それを試してみます。 – vancake

+0

独自の認証ロジックを使用せず、パスワードハッシュにmd5を使用しないでください。 Laravelがこれを処理できるようにするには、安全でないシステムを作成するだけです。 – Devon

答えて

3

3つの方法:

1)

Session::flush(); // removes all session data 

2)

Session::forget('yourKeyGoesHere') // Removes a specific variable 

3)

Auth::logout() // logs out the user 
関連する問題