omarpre/idle-timeout

一个用于提醒即将过期的空闲会话的 Laravel 扩展包 - 已分支

v1.0.0 2022-09-15 19:51 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:03:20 UTC


README

一个用于提醒即将过期的空闲会话的 Laravel 扩展包。

虽然 SESSION_LIFETIME 很好,但用户如何知道会话何时因不活动而即将过期,尤其是如果这个值很小?此外,用户可能正在积极与网站互动(通过点击或填写表单),而从未向后端发送请求。Laravel 可能会在用户不知情的情况下结束会话。

当会话即将过期时,显示一个对话框,以便用户可以选择不注销。

工作原理

此代码实际上并不会注销用户。它仍然依赖于 Laravel 的会话过期机制。它所做的只是定期检查会话何时将过期,并在接近时间时提醒用户。

演示库在 omarpre/idle-timeout-alert-demo

安装

Laravel 扩展包和 NPM 依赖

composer require omarpre/idle-timeout-alert
npm install --save idle-vue

使用

禁用 "记住我" 功能

步骤 1:将以下行添加到 app/User.php

protected $rememberTokenName = false;

步骤 2:从您的登录表单中移除 "记住我" 复选框

发布并编译资源

步骤 1:将资源发布到供应商文件夹

php artisan vendor:publish --provider="omarpre\IdleTimeoutAlert\IdleTimeoutAlertServiceProvider" --tag="vue-components"

步骤 2:将以下内容添加到应用程序的 resources/js/app.js 中。将其放置在组件注册部分

require('./../assets/vendor/omarpre/idle-timeout-alert/js/app');

步骤 3:编译

npm run dev

添加组件

最后,将组件添加到您希望显示对话框的任何页面。一个很好的地方是 layouts/app.blade.php

<timeout-dialog></timeout-dialog>

默认情况下,对话框仅在用户空闲时会话即将过期时才会出现。只要用户有活动,就会在后台发送 ping 以保持会话活跃。

如果您想忽略用户活动并且无论什么情况下都要显示对话框,请使用以下方法

<timeout-dialog v-bind:ignore-activity="true"></timeout-dialog>

如果您希望允许用户在特定页面上无限期地停留而不超时,请使用以下方法

<timeout-dialog v-bind:keep-alive="true"></timeout-dialog>

只要用户在页面上,就会在后台发送 ping 以保持会话活跃,并且永远不会出现对话框。

自定义

您可以在 resources/assets/vendor/omarpre/idle-timeout-alert/js/components/TimeoutDialog.vue 中修改对话框。别忘了重新编译资源!