cjmellor/browser-sessions

一个 Laravel 扩展包,允许用户管理和监控他们的活跃浏览器会话。用户可以查看自己登录的设备,并提供终止未识别或所有会话的选项,增强账户安全性。

v1.1.0 2024-03-24 00:16 UTC

This package is auto-updated.

Last update: 2024-09-08 14:33:25 UTC


README

Latest Version on Packagist Total Downloads Packagist PHP Version Laravel Version

警告

此包只能与 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)。有关更多信息,请参阅 许可证文件