2015-07-20 41 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

相关问题