Laravel 5.5 - помните меня и проблема с пользовательскими значениями сеанса - PullRequest
0 голосов
/ 15 октября 2019

Я установил laravel 5.5 и установил некоторые пользовательские значения в сеансе при входе в систему

внутри Auth / LoginController

public function authenticated(Request $request, $user)
{    
    Session::put('full_name', 'Thomas');
    Session::put('age', '35');
    Session::put('place', 'UK');
    Session::save();
}

Я установил время сессии в 1 минуту в файле .env

SESSION_LIFETIME=1

При входе пользователя в систему, если он установил флажок Запомнить меня, новый файл cookie сгенерирован и запомнился в таблице USERS.

Я печатаю пользовательские значения сеанса в файле представления после полученияих из сеанса

$full_name = Session::get('full_name');
$age = Session::get('age');
$place= Session::get('place');
return view('home', compact('full_name', 'age', 'place'));

После 1 минуты бездействия мой сеанс истек, но поскольку пользователь установил флажок Запомнить меня, он будет зарегистрирован , но значения в сеансе исчезнут

Это не имеет смысла !, мне нужны значения сеанса, пока пользователь вошел в систему.

1 Ответ

1 голос
/ 15 октября 2019

Если пользователь прошел проверку подлинности с помощью функции remember_token, метод Auth\LoginController@authenticated не вызывается.

Для этого рекомендуется использовать глобальное промежуточное программное обеспечение, которое проверяет, прошел ли пользователь проверку подлинности иданные сеанса установлены. Если он не установлен, установите данные.

Ваша функция промежуточного программного обеспечения может выглядеть примерно так:

public function handle($request, Closure $next, $guard = null)
{
    if(!Auth::check()) {
        return $next($request);
    }

    if(Session::has('full_name') && Session::has('age') && Session::has('place')) {
        Session::put('full_name', 'Thomas');
        Session::put('age', '35');
        Session::put('place', 'UK');
        Session::save();
    }

    return $next($request);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...