Узнайте, сколько времени истекает текущий сеанс в Laravel 5.7? - PullRequest
1 голос
/ 19 марта 2019

Есть ли в Laravel 5.7 способ узнать, сколько времени осталось до истечения текущего сеанса у пользователя?

EDITED

Я также хочу проверить, когда истекает текущий сеанс как для гостей, так и для зарегистрированных пользователей.

Кроме того, в текущих ответах, по-видимому, существуют противоречивые представления о том, что сеанс истекает ровно через "SESSION_LIFETIME" минуты спустявойдите в систему, в то время как другие думают, что сессия истекает после последнего действия пользователя.Было бы хорошо уточнить, что является правильным.Затем также, как получить время последнего действия и что классифицируется как действие в сеансе.

Кроме того, я думаю, что Session :: activity () был удален в Laravel 5.7.

ВОЗМОЖНОЕ РЕШЕНИЕ

Благодаря @ bharat-geleda ниже, это рабочее решение, если вы используете Laravel 5.7 и храните сессии в БД.

$last_activity = \DB::table('sessions')->select('last_activity')->where('id', session()->getId())->first()->last_activity;

$session_time_remaining_minutes = ($last_activity + (\Config::get('session.lifetime') * 60) - time()) / 60;

dd($session_time_remaining_minutes);

I'mв настоящее время неясно, когда обновляется «last_activity», однако это не происходит при обновлении страницы.

Ответы [ 3 ]

0 голосов
/ 19 марта 2019

Вы можете изменить время жизни сеанса для всего приложения, изменив значение времени жизни в config / session.php:

/*
|--------------------------------------------------------------------------
| Session Lifetime
|--------------------------------------------------------------------------
|
| Here you may specify the number of minutes that you wish the session
| to be allowed to remain idle before it expires. If you want them
| to immediately expire on the browser closing, set that option.
|
*/

'lifetime' => env('SESSION_LIFETIME', 120), // The default is 120
'expire_on_close' => false,

Сессия обновляется каждый раз, когда session_start ();называется.Это произойдет, когда вы, например, обновите страницу.поэтому вы можете написать код jQuery со значением счетчика (120 * 60) и он обновляется снова при каждом обновлении.

0 голосов
/ 19 марта 2019

Добавьте два столбца в вашу таблицу аутентификации (пользователи) например, session_start_time и session_end_time

теперь, когда логин пользователя обновляет текущую метку времени в session_start_time и добавляет минуты в соответствии с вашим config / sessions.php (SESSION_LIFETIME);

так что из разности текущего времени и session_end_time вы можете получить оставшееся время.

Вы можете использовать углерод для метки времени и для разности

0 голосов
/ 19 марта 2019

Если вы знаете, когда пользователь вошел в систему, сохранив его в таблице пользователей базы данных, и вы бы узнали из config / sessions.php, как долго длится ваша сессия до ее истечения, сложение двух вместе позволит вам вычислить, как долго до истечения сеанса пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...