2015-07-20 39 views
0

我開始與我的項目使用laravel 5一起工作。我意識到,它在我登錄到我的網站後與會話在本地目錄中工作正常,但我只知道當我將我的項目託管到服務器時出現問題。每次登錄後,會話都會記不起來,並且每次借用該頁面時都會重新創建。這給我帶來了問題。會話不記得,爲什麼會在每次加載頁面時創建會話?

Laravel登錄

public function postLogin(){ 
$hit = 0; 
if(Request::ajax()){ 
    $pw = Request::input('pw'); 
    if(!empty($pw)){ 
     $admin_pass = AdminPassword::first(['admin_pass']); 
     $ip_address = Request::ip(); 
     if(!empty($admin_pass) && trim($admin_pass->admin_pass) == trim($pw)){ 
      if(Auth::attempt(['username' => Request::input('username'), 'password' => Request::input('password'),'status'=>1])){ 
       try{ 
        $user = Auth::user(); 
        $user->last_login = date('Y-m-d H:i:s'); 
        $user->login_ip = $ip_address; 
        $user->save(); 
        $permissions = Auth::user()->permission; 
        if(!empty($permissions) && count($permissions) >0){ 
         session(['ROLE_PERMISSION'=>$permissions]); 
        } 
        $failed = FailedLogin::whereRaw('ip_address = INET_ATON(\''.$ip_address.'\')')->first(); 
        if(!empty($failed)){ 
         $failed->delete(); 
        } 
       }catch (\Exception $ex){} 
       $url = Request::session()->pull('url.intended', '/'); 
       return ['url'=>$url,'msg'=>'Successfully.','status'=>true,'hit'=>$hit]; 
      }else{ 
       $hit = $this->updateFailedLogin($ip_address,Request::input('username')); 
      } 
     }else{ 
      $hit = $this->updateFailedLogin($ip_address,Request::input('username')); 
     } 
    } 
}else{ 
    return redirect()->route('login'); 
} 
return ['url'=>'','msg'=>'Try again.','status'=>false,'hit'=>$hit]; 

}

請幫助我。這是我的項目的最後一步。

謝謝您的高級。

+0

在你的.env文件中,你有什麼'SESSION_DRIVER'設置爲? – BrynJ

回答

-1

你把

session_start(); 
在所有網頁

? 如果不是這可能是你的問題,I D建議你在你的索引添加此直接

+0

不好意思,你能告訴我怎麼做? –

+0

我不知道laravel 5是如何工作的,但在php會話重新啓動時,這意味着你進入一個沒有啓動會話的頁面。在很多框架中,會話是自動啓動的,但有時我們會因爲某些原因而跳出框架頁面,並因此導致連接失效。這可能是問題所在。 –

0

有可能你有你的.ENV設置爲fileSESSION_DRIVER - 根據您的託管環境,這可能意味着你的會話ISN由於每個請求都來自不同的文件服務器(在雲環境中很常見),因此不會持續。

嘗試將您的SESSION_DRIVER更改爲database

相關問題