Подтвердить что ты не робот

Как получить сеанс памяти после входа в 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];
}

Пожалуйста, помогите мне в этом.

Большое спасибо.

4b9b3361

Ответ 1

Если это работает идеально локально, а не только его, вероятно, одна из двух вещей. 1) вам необходимо установить права доступа к папке хранилища для записи. 2) когда вы входите в систему локально в браузере, и он сохраняет ваш файл cookie, если вы пытаетесь выполнить вход в систему, он регистрирует вас локально, потому что тот же файл cookie в основном, но указывает на разные домены. Поэтому вы, вероятно, должны использовать разные браузеры, если хотите работать локально и онлайн одновременно.

Ответ 2

Используйте ниже код

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

.ajaxError()

Ответ 3

Что вы можете попробовать - Session: save(); Он решил мою проблему, когда сеанс не переносился при перенаправлении пользователя на платежный шлюз.

Из того, что я слышал, это вызвано некоторым прерыванием запроса HTTP.

Ответ 4

Если журналы ошибок в хранилище/журналы не дают никаких сведений о таких проблемах, как разрешения на доступ к каталогам, проверьте файл .env на своем сервере для SESSION_DRIVER, загружаемой в config/session.php, чтобы убедиться, что у вас есть правильный механизм сохранения на основе конфигурации вашего сервера (файл, cookie, database, apc, memcached, redis, и др.).

Если это не помогает, проверьте файл config/session.php. Я видел, что кто-то задал свойство lifetime 0, думая, что это сделает сеансы неопределенными, но на самом деле это вызвало проблему, с которой вы столкнулись.

Ответ 5

Проверьте, как вы храните сеанс.

По умолчанию laravel использует файловую (storage/framework/sessions), убедитесь, что каталог доступен для записи.

Ответ 6

  • во-первых, настройки вашего сервера вы должны проверить. проверьте разрешение папки хранения. (sudo chmod -R 777 storage)
  • если он не фиксирован. затем очистите кеш браузера и выйдите из локального приложения и попробуйте снова войти в систему. возможно, вы можете сломать коды после установки cookie.

Ответ 8

Если вы размещаете свой проект, возможно, у вас нет правильных разрешений файловой системы. Вместо этого используйте драйвер базы данных сеанса.

Обратитесь к Laravel 5 в сеансе хранения в базе данных/redis.

Ответ 9

Я не уверен, что вы пытаетесь сделать, вы должны попробовать следующее:

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