【问题标题】:Laravel - Distinguish session by user_IDLaravel - 通过 user_ID 区分会话
【发布时间】:2018-03-16 09:05:14
【问题描述】:

我有一个项目,登录用户可以填写一些数据。然后,此数据将存储在名为“Main_settings”的会话中。我这样做的方法是在我的控制器中这样做:

private $predefinedArray = ['user_id', 'city', 'postal_code', 'street_name',
                            'house_number', 'store_name', 'store_tel',
                            'store_hoo', 'vat_number'];

public function store(Request $request)
{
    foreach($this->predefinedArray as $value) {
        $request->session()->put('main_settings.' . $value, $request->input($value));
    }

   return redirect('themes');
}

在我看来,我通过这样做来调用会话变量:

{{ session('main_settings.store_name') }}

如果用户返回,他的信息仍然存在,这不是问题。问题是,如果 John Doe 登录并开始填写表格,然后退出。而Jane Doe 登录,John Doe 填写的信息会显示出来,而Jane Doe 甚至还没有填写任何内容。

不知何故,我需要通过用户 ID 来区分会话,以便我可以在视图中调用登录用户的会话。我怎样才能做到这一点?

user_id 与表单一起发送。

提前致谢。

【问题讨论】:

  • 您是否考虑过在用户注销时清除main_settings
  • 对不起。我不明白。会议是独一无二的。这怎么可能?你能提供更多信息吗?因为你好像错过了什么
  • @haakym 我不太确定,在 laravel 中,我认为这是自动发生的,如果不是,我该如何实现?我知道需要的代码是$request->session()->flush();,但只有在请求时才能这样做?
  • @AlexSlipknot 这是我关于这个问题的所有信息。我唯一能给你额外的就是 HTML 表单,我认为这里不需要。
  • 啊,好的,我明白了 :) 你被设置为 request->session 而不是 session()。所以有问题。

标签: php laravel session laravel-5


【解决方案1】:

问题是,如果 John Doe 登录并开始填写 表单,然后注销。 Jane Doe 登录后,该信息 将显示已填写的 John Doe,而 Jane Doe 甚至没有填写 还有什么。

发生这种情况是因为您在 John Doe 注销时没有忘记这些值。如果您想在 John Doe 注销时删除插入的值,请查看此内容。

Controller.php

private $predefinedArray = [
    'user_id', 'city', 'postal_code',
    'street_name', 'house_number', 'store_name',
    'store_tel', 'store_hoo', 'vat_number'
];

public function logout()
{
    session()->forget('main_settings');

    auth()->logout();

    return redirect('/');
}

这应该可以帮助您实现结果。


如果出于任何原因,您希望保留会话中的值,您可以执行以下操作:

public function store(Request $request)
{
    foreach($this->predefinedArray as $value) {
        session()->put(auth()->id().'.main_settings.' . $value, $request->$value);
    }

   return redirect('themes');
}

通过添加auth()->id(),您已经保留了会话、用户的 ID 以及他在填写表单时插入的设置。这反过来又会帮助已登录的用户,因为他们不必再次填写所有详细信息。

希望这对您有所帮助。快乐编码。干杯。

【讨论】:

    猜你喜欢
    • 2021-02-22
    • 2021-03-10
    • 2016-11-04
    • 2015-04-23
    • 2020-12-11
    • 2021-01-02
    • 2017-11-08
    • 1970-01-01
    • 2021-06-14
    相关资源
    最近更新 更多