【问题标题】:How should I call "session()->forget('data')"?我应该如何调用“session()->forget('data')”?
【发布时间】:2020-01-27 13:07:43
【问题描述】:

我有一个功能可以在用户没有当前会话的情况下存储数据。

Broadcast::channel('chat', function ($user) {
    $ip = Request::ip();
    $time = now();

     if (auth()->check() && !session()->has('name'))  { 
         UserInfo::storeUser();
          session()->put('name',$user->name);
            return [
                'id' => $user->id,
                'ip' => $ip,
                'name' => $user->name,
                'joined' => $time,
            ];
        }
    });

有人说当用户退出时我应该像这样删除会话数据

session()->forget('name');

所以我在 LoginController 中创建了这个函数

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

我这样称呼它

 Route::get('logout', 'LoginController@logout');

结果

我在尝试注销时看到空白页。

所以恐怕我不明白如何正确编写此函数或在哪里调用它会从会话中删除数据。

【问题讨论】:

    标签: database laravel session


    【解决方案1】:

    当您希望用户退出时,您需要对经过身份验证的用户调用 logout 方法,然后将他们重定向到您希望他们访问的任何页面。一般是应用的欢迎页面。

    您需要将logout() 方法的内容替换为以下内容:

    /**
     * Logout the user and redirect them to the welcome page.
     *
     * @return  \Illuminate\Http\RedirectRespose
     */
    public function logout()
    {
        auth()->logout();
    
        session()->forget('name');
    
        return redirect('/');
    }
    

    【讨论】:

    • @Brad_Fresh 随时。很高兴我能帮上忙。
    猜你喜欢
    • 2016-07-15
    • 2017-06-08
    • 1970-01-01
    • 2011-03-13
    • 2021-07-11
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    相关资源
    最近更新 更多