【问题标题】:How to delete session from database in Laravel如何从 Laravel 中的数据库中删除会话
【发布时间】:2019-08-29 19:26:21
【问题描述】:

我正在尝试将会话存储在数据库中而不是文件中。 所以在我的 .env 文件中:-

SESSION_DRIVER=数据库

& 在我的 config/session.php 中:-

'driver' => env('SESSION_DRIVER', 'database'), 'table' => 'sessions',

所以现在做完之后:

$request->session()->flush()

要删除我的控制器中的会话,会话值仍然存储在我的数据库中。虽然在控制器中刷新会话后,我检查了会话密钥是否存在,但它显示会话不存在,但 为什么没有从数据库中删除会话?也在我的数据库表中会话 user_id 显示 NULL为什么会这样?

之前我曾经将会话存储在一个文件中。现在我正在尝试将会话存储在数据库中。谁能帮帮我。

【问题讨论】:

  • 你在会话中存储了什么?访问者的信息必须保持在会话中,user_id 为空,因为您未通过身份验证

标签: php laravel session laravel-5.8


【解决方案1】:

只有调用Session垃圾回收器后,数据库中的旧会话行才会被删除,具体函数为gc()

此函数有可能在每个请求上被调用,您可以使用session.lottery 配置值控制它运行的机会。

但是不用担心,即使会话行仍然存在于数据库中,它们在注销后也会失效(user_id 为空),使用上面的gc() 函数只会删除。

Session::flush()Session::regenerate(true) 都不会删除旧的会话行。

【讨论】:

    猜你喜欢
    • 2019-12-30
    • 2019-12-31
    • 2019-06-08
    • 2021-06-08
    • 2017-07-25
    • 1970-01-01
    • 2011-04-11
    • 2012-02-02
    • 2022-01-21
    相关资源
    最近更新 更多