如何在 laravel 5 登录后获得会话记忆?

2022-08-30 20:08:50

我开始使用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];
}

请帮帮我。

谢谢。


答案 1

如果这在本地完美地工作,而不仅仅是它可能是两件事之一。1)您需要在存储文件夹上设置权限才能写入。2)当您在浏览器上本地登录并保存您的cookie时,如果您尝试在线登录,它会在本地注销您,因为它基本上是相同的cookie,但指向不同的域。因此,如果您想同时在本地和在线工作,则可能应该使用不同的浏览器。


答案 2

使用以下代码

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

.ajaxError()

推荐