【问题标题】:How to do give expire time to specific session in laravel 5.6 ?如何在 laravel 5.6 中为特定会话提供过期时间?
【发布时间】:2019-01-21 03:12:30
【问题描述】:

我想创建会话,应该在 3 天后将其删除。

我该怎么做?我检查了这里的文件和问题,但一无所获..

-我到底想要什么?

session()->put("suspect",true,strtotime($time_diff))

这可能吗?

【问题讨论】:

  • 你想用这个实现什么?是不是更容易使用缓存,并用对应于用户id或会话id的标签存储它?
  • @apokryfos 我正在尝试将一些用户标记为嫌疑人一段时间。我坚持为此创建一个会话价值就足够了。有没有更好的方法来做到这一点?
  • 会话是短暂的。如果您要标记的用户已注册,那么这很容易。您可以在数据库中创建一个“flagged_at”列,如果用户在过去 3 天内被标记,则认为他们已被标记。如果您想标记非注册用户,那么这很难(几乎不可能)。困难的部分是知道 2 天后访问您页面的用户与您之前标记的用户相同。
  • @apokryfos 实际上我在数据库中创建了一个suspended_at 列,它检查用户是否怀疑。但是我不想每次都控制它,如果用户已经怀疑,不需要一次又一次地检查。所以我决定创建一个关于它的会话。这是不必要的吗?
  • 您可以在用户登录时在会话中加载该列的内容。这应该足够了,因此如果用户已经有会话,您不需要在每次请求时都访问您的数据库。但是,您需要实际计算暂停是否对每个请求仍然有效(这是一个简单的数学运算,不应该太耗时)。但是,您的方法应该是会话是数据库的后备存储(如每个用户缓存),因此您不应该依赖会话值存在,如果它根本不存在,您可能需要读取表行.

标签: php laravel session laravel-5.6


【解决方案1】:
$_SESSION['expire'] = time() + 259200; // 3 days

if(time() > $_SESSION['expire'])
{  

 session_unset();
 session_destroy(); 

}

【讨论】:

  • 哈哈,祝你天天开心
【解决方案2】:

在 config/session.php 中编辑

'lifetime' => 3 * (60 * 24), // 3 days

【讨论】:

  • 您正在更改会话的默认时间,这意味着整个项目会话将只工作 3 天
  • 它影响整个应用程序,我只想更改特定会话
  • 对不起兄弟。让我们找出其他方法
猜你喜欢
  • 2017-10-20
  • 2019-01-05
  • 2018-04-19
  • 2019-08-15
  • 2018-07-29
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 2019-11-07
相关资源
最近更新 更多