omarpre / idle-timeout
一个用于提醒即将过期的空闲会话的 Laravel 扩展包 - 已分支
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
中修改对话框。别忘了重新编译资源!