2015-07-20 31 views
21

我開始與我的項目使用laravel 5一起工作。我意識到,它在我登錄到我的網站後與會話在本地目錄中工作正常,但我只知道當我將我的項目託管到服務器時出現問題。每次登錄後,會話都不記得那個問題給我了。如何在laravel 5登錄後記住會話?

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

檢查config/auth.php設置?然後,如果新環境根據它被正確設置。 – koalaok

回答

1

如果這在當地完美地工作,而不僅僅是它可能是兩件事之一。 1)您需要將存儲文件夾的權限設置爲可寫。 2)當您在瀏覽器上本地登錄時,它會保存您的cookie,如果您嘗試在線登錄,它將在本地註銷,因爲它基本上是同一個cookie,但指向不同的域。所以,你如果你想在同一時間本地和在線工作

0
  • 首先您的服務器設置可能應該使用不同的瀏覽器,你必須檢查它。檢查存儲文件夾的權限。 (sudo chmod -R 777 storage
  • 如果它不是固定的。然後清除瀏覽器緩存,然後註銷本地應用程序並嘗試再次登錄。也許你可以在設置cookie後打破代碼。
1

使用下面的代碼

setInterval(function(){ 
    $.get('/my/ping/route'); 
}, 1000 * 60); 

.ajaxError() 
-1

我不知道你正在嘗試做的, 你應該試試這個:

Session::put('url.intended', '/') 
1

你可以嘗試的是Session:save();它解決了我的問題,即將用戶重定向到支付網關時,會話尚未結轉。

從我聽說它是​​由HTTP請求中的一些中斷造成的。

1

如果存儲錯誤日誌/日誌沒有給出關於如目錄權限問題任何線索,請檢查您.ENV文件服務器上對於在配置加載SESSION_DRIVER變量/ session.php以確保您擁有基於您的服務器配置(文件,cookie,數據庫,apc,memcached,redis等)的正確持久機制。

如果這沒有幫助,請檢查config/session.php文件。我看到有人將終身財產設置爲,認爲這會使會話不確定,但實際上它會導致您遇到的問題。

1

請檢查您的會話存儲方式。

默認情況下,laravel使用基於文件的(storage/framework/sessions),確保目錄是可寫入