Laravel 使用注销消息获取注销

Laravel getLogout with Logout Message

我想在退出后收到 'Logged Out' 消息。我发现了这个:

public function getLogout()
{
    // Copy over the stuff from the getLogout function in the trait

    // Add your flash message

    // You are done ;)
}

上面写着我需要从 getLogout 函数中复制内容并添加即显消息。但是 getLogout 代码在哪里?我找不到它。还有其他办法吗?

我试过这个:

public function getLogout()
{
    Session::flash('message', 'You have been logged out!');
    return redirect(action('Auth\AuthController@getLogout'));
}

在 blade 我在注销后收到指示:

@if (Session::has('message'))
    <div class="alert alert-info">{{ Session::get('message') }}
        <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
    </div>
@endif

但这对我不起作用。有人知道解决方案吗?我只想要一条 "You have been logged out" 消息。

谢谢

getLogout 函数在 AuthenticatesUsers 特征中定义 (Illuminate/Foundation/Auth/AuthenticatesUsers.php).

默认情况下,它只是调用注销函数。

试试看:

public function getLogout()
{
    Session::flash('message', 'You have been logged out!');
    return $this->logout();
}

您可以使用:

return redirect(action('Auth\AuthController@getLogout'))->with('message','Your Message');

我假设你已经测试过这个动作确实被调用了?

问题在于您的重定向。 Flash 消息仅针对 1 个请求保留(如果未手动保留)。您正在重定向到注销,这会将用户重定向到他们要去的任何页面。 (可能是“/”)

第一次重定向后,您的即显信息将被清空,因此接下来的重定向将不会留下任何即现信息。

像这样更改(或创建)您的 Auth\AuthController@logout。

public function logout()
{
    Auth::logout();

    return redirect('/')
        ->with('message', 'You have been logged out');
}

或检查 Illuminate\Foundation\Auth\AuthenticatesUsers@logout 以查找要复制粘贴的内容..

客人可以访问您重定向到的位置,这一点很重要,否则您将获得另一个重定向,这将清除您的会话变量。