Тайм-аут сеанса Laravel Auth - PullRequest
0 голосов
/ 05 марта 2019

Я видел несколько вопросов в этой области, и до сих пор все ответы, похоже, фокусируются на обнаружении истечения срока действия следующего действия пользователя.Независимо от возможности сделать это, я хочу, чтобы код на стороне сервера определял срок действия, а затем принудительно обновлял экран пользователя.Концептуально этот процесс выглядит примерно так:

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

В моем случае я использую Auth для входа в систему и предоставления пользователю прав администратора.Это включает в себя доступ к формам обслуживания / кнопкам.

По сути, я НЕ хочу, чтобы оставался экран, так как он был до истечения срока действия, предполагая, что пользователь а) все еще вошел в систему и б) показывает детали того, что он делал в то время.Если у пользователя есть особые права, они не должны оставаться видимыми после истечения срока действия.Например, администратор меняет персональные данные пользователя и получает отзыв.Учитывая, что он / она должен был прекратить процесс и выйти из системы, если они этого не сделали, подробности не следует оставлять на экране, чтобы какой-то другой человек мог их увидеть через некоторое время.

Идеальным вариантом будет некоторая формаПрослушиватель событий, но даже тогда я не уверен, как заставить изменение экрана, за исключением запуска цикла таймера JS.

Я бы предположил, что я не единственный, с этим типом требований, поэтому мой вопрос...

Как вы справляетесь с требованиями такого типа в рамках ограничений Laravel 5?

1 Ответ

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

Значение сеанса по умолчанию определено в config / session.php.Вы можете получить значение, используя вспомогательную функцию config config('session.lifetime').

. В вашем случае вам нужно будет проверить время сеанса на стороне клиента (javascript.)

Вот пример кодаобновить страницу до истечения сеанса.Этот код предназначен для шаблона блэйда.

@if (Auth::check()) 
    <script>
    var timeout = ({{config('session.lifetime')}} * 60000) -10 ;
    setTimeout(function(){
        window.location.reload(1);
    },  timeout);



    </script>
@endif

Вы можете настроить код для запроса диалогового окна, чтобы подтвердить, хочет ли пользователь увеличить время своего сеанса и выполнить ajax, чтобы получить или обновить время сеанса.

...