【问题标题】:How to set expire time for specific session如何为特定会话设置过期时间
【发布时间】:2017-10-20 12:52:01
【问题描述】:

我正在使用 Laravel。我的问题是在 Laravel 中以任何方式管理具有特定过期时间的特定会话。

我从 session.php 延长了会话过期时间,但这里适用于所有会话。

例如,我想管理登录会话 1 周或特定时间,其他会话应在 1 小时或正常时间后过期,如关闭浏览器。

【问题讨论】:

  • @jbe 感谢您的回复。它仅适用于登录会话感谢您的回复。但是“remember_token”仅适用于登录我也想将此功能用于其他会话
  • 如何知道会话应该在没有登录的情况下持续 1 周还是 1 小时?
  • 这是问题,先生
  • 不幸的是,laravel 在整个应用程序中使用了一个会话存储。甚至没有选项可以设置会话方法的到期时间。因此,要执行您要求的操作,需要侵入内置的会话存储。

标签: php laravel session laravel-5


【解决方案1】:

您可以尝试将会话分配的日期保存给用户。 让我们举一个用户名的例子。

拥有 id、user_id、session_name 和 created_at 的 mysql 表 session,您可以简单地执行以下操作:

$s = new Session;
$s->user_id = $user_id;
$s->session_name = 'name';

然后稍后在您的应用程序中,您可以简单地检查 NOW 和 $s->created_at 之间的时间是否大于您感兴趣的值(例如 7 天左右)。如果是这样 - 通过执行以下操作删除记录并删除会话: session()->forget($s->session_name);

编辑

您还可以添加持续时间列,以便在时间过去后动态忘记会话。

【讨论】:

  • 感谢您的回答。对于您所说的解决方案,我必须将会话驱动程序更改为数据库表?
  • 我的想法不是改变它,而是创建一个额外的表并使用会话外观和数据库存储来处理它
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 2019-08-15
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
  • 2019-01-21
  • 2022-06-10
  • 2011-10-23
相关资源
最近更新 更多