2016-06-21 20 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); 

} 

我所做的是登錄() - > checkuser() - >註銷(); 但是,當我登錄()與另一個帳戶時,我發現會話Id是完全一樣的。爲什麼?

+0

爲什麼要改變?你爲什麼不使用'\ Auth'來處理那些東西? – tkausl

+0

行..我試試吧。 – vancake

+0

請勿使用您自己的驗證邏輯,也不要使用md5進行密碼散列。允許Laravel爲你處理這個問題,你只是要創建一個不安全的系統。 – Devon

回答

3

三種方式銷燬會話:

1)

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

2)

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

3)

Auth::logout() // logs out the user