【问题标题】:Close session laravel with id使用 id 关闭会话 laravel
【发布时间】:2019-03-25 23:35:02
【问题描述】:

如何在身份验证的注销方法中关闭带有 id 的会话?在 post 控制器中,在方法 show 我设置会话:

 session(["is_model_open_post_id" . $post->id => false]);

但是当用户注销时,我需要关闭这个会话,设置为真。

 session(["is_model_open_post_id" . $post->id => true]);

但我不知道如何在方法注销中获取帖子的 ID。

【问题讨论】:

  • 函数session()有什么作用?
  • 但我不知道如何在方法注销中获取帖子的 id 你把它放在任何地方了吗?也许在会话数组中?
  • 在我看来,$post->id 不管是什么,连接到会话名称上都不是一件好事
  • @RiggsFolly 对不起,我修好了。当然是数组。

标签: php laravel


【解决方案1】:

session() helpers 参数用于getset 当前用户的会话数据。您正在使用的数组函数正在尝试再次set 数据到当前会话。

如果我是正确的,您想要做的是 remove 完全会话数据键/值对。

这可以通过以下方法完成:

session()->forget('is_model_open_post_id' . $post->id);

如果您想忘记所有会话数据:

session()->flush();

要控制注销时发生的情况,您需要更新路由以覆盖自定义 Auth::routes() 注销路由:

Route::post('logout', function() {
    session()->forget('is_model_open_post_id' . $post->id);

    auth()->logout(); // or Auth::logout();

    return redirect('/'); // or to another route
});

注意:这应该在Auth::routes()之后。

【讨论】:

  • 如何在注销方法中删除会话is_modal_open_post_id
  • @Dronax 你是在使用Auth::routes() 来使用注销方式吗?
  • 您需要覆盖这条路线,我为了添加您的自定义功能。我会更新我的答案。
  • @Dronax 查看答案。
  • @Dronax 可能是GET 请求,我还没有检查自己。
猜你喜欢
  • 2021-12-04
  • 2012-08-19
  • 2019-04-14
  • 1970-01-01
  • 2016-04-04
  • 2023-03-30
  • 2015-04-26
  • 2015-02-23
  • 1970-01-01
相关资源
最近更新 更多