【问题标题】:Check if a specific user is connected | Laravel Auth检查特定用户是否已连接 | Laravel 身份验证
【发布时间】:2020-08-01 02:46:17
【问题描述】:

我想知道是否有任何方法可以知道用户当前是否在我的页面上处于活动状态(会话已启动)。

我知道Auth::check() 存在,但它只在本地用户通过身份验证时返回,我不能用它来询问任何用户。

我修改了LoginController,以便在登录方法和注销方法中,数据库修改我,从而知道它是否已启动或已断开连接。 但如果用户以其他方式注销,例如关闭浏览器,此解决方案将变得毫无用处。

我突然想到,我可以创建一种 setTimeOut 事件,每 10 分钟检查一次Auth::check(),如果它返回 false,则修改该用户的数据库,了解他不再连接。但我不知道该怎么做。

请帮帮我。

【问题讨论】:

标签: laravel authentication logout


【解决方案1】:

您可以使用会话数据库,这样您就可以检查平台内所有登录的用户及其最近的活动。

这里是会话数据库架构

Schema::create('sessions', function ($table) {
    $table->string('id')->unique();
    $table->unsignedInteger('user_id')->nullable();
    $table->string('ip_address', 45)->nullable();
    $table->text('user_agent')->nullable();
    $table->text('payload');
    $table->integer('last_activity');
});

然后调整您的SESSION_DRIVER=database,然后您将在会话数据库中看到所有活动/非活动会话。

【讨论】:

  • 这肯定回答了这个问题,应该是公认的答案。此外,Laravel 支持额外的会话驱动程序,这些驱动程序可用于支持类似的东西,并允许您在需要时定义自定义驱动程序:laravel.com/docs/8.x/session
猜你喜欢
  • 2022-09-29
  • 2020-11-29
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 2016-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多