cjmellor / browser-sessions
一个 Laravel 扩展包,允许用户管理和监控他们的活跃浏览器会话。用户可以查看自己登录的设备,并提供终止未识别或所有会话的选项,增强账户安全性。
v1.1.0
2024-03-24 00:16 UTC
Requires
- php: ^8.2
- illuminate/support: ^10.0|^11.0
- jenssegers/agent: ^2.6
- spatie/laravel-package-tools: ^1.14
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.0|^8.0
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpunit/phpunit: ^10.0
README
警告
此包只能与 Sessions 的 database
驱动程序一起使用。这就是在 Jetstream 中这样做的方式,所以请记住这一点,因为这可能会让你感到困扰,因为可能需要在数据库中管理会话。
登出其他浏览器会话
此包允许您登出其他设备上活跃的会话。
如果您在另一台设备上登录,或者让他人使用您的账户,或者忘记在公共电脑上登出,这可能很有用。如果您在自己的账户上看到可疑的设备活动,它尤其有用。
注意
此代码已从 Laravel Jetstream 提取,并且不能在 Laravel 应用程序之外使用。
安装
您可以通过 Composer 安装此包。
composer require cjmellor/browser-sessions
用法
检索用户的当前会话
使用 BrowserSessions
门面检索所有当前用户的会话
BrowserSessions::sessions();
这将返回一个包含每个会话一些信息的对象
[ { "device": { "browser": "Safari", "desktop": true, "mobile": false, "platform": "OS X" }, "ip_address": "127.0.0.1", "is_current_device": true, "last_active": "1 second ago" } ]
登出其他浏览器会话
使用 BrowserSessions
门面登出所有用户的其他浏览器会话
BrowserSessions::logoutOtherBrowserSessions();
注意
必须向方法发送一个 password
以确认用户的身份。只有在这种情况下,才会删除会话。下面是如何实现此操作的示例。
视图
此包不包含任何预定义的视图。以下是一个示例,说明如何实现此功能
在您的 routes/web.php
文件中添加以下路由
Route::delete('logout-browser-sessions', function () { BrowserSessions::logoutOtherBrowserSessions(); return back()->with('status', 'Logged out of other browser sessions.'); })->name('logout-browser-sessions');
然后,在您的视图中,您可以添加一个表单,向上述路由提交 DELETE
请求
<form method="POST" action="{{ route('logout-browser-sessions') }}"> @csrf @method('DELETE') <x-text-input label="Password" name="password" placeholder="Enter password" type="password" /> <button type="submit">Logout Other Sessions</button> </form>
检索用户的最后活动
通过使用 getUserLastActivity
方法获取用户的上次活动
BrowserSessions::getUserLastActivity();
您还可以以可读的日期格式查看
BrowserSessions::getUserLastActivity(human: true);
鸣谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。