【问题标题】:Laravel logout not workingLaravel注销不起作用
【发布时间】:2017-01-07 18:37:19
【问题描述】:

我正在 laravel 5.2 中尝试简单的注销功能,但我真的不明白我错在哪里。如果有人可以提供帮助,那就太好了。

这里是路线

Route::get('logout', 'loginController@getLogout');

loginController getLogout 方法:

public function getLogout()
{
    //$this->auth->logout();
    Session::flush();
    Auth::logout();
    return redirect('/');
}

link 在使用此功能的视图中:

<a href="{{url('logout')}}">Logout</a>

会话存储代码:

$request->session()->put('name', $username['name']);

AuthController 构造函数:

public function __construct()
{
    $this->middleware('guest', ['except' => ['logout', 'getLogout']]);
}

当用户点击注销链接时,它会重定向到根页面,但不会真正破坏会话或注销。它不需要登录即可查看页面(它应该)。

【问题讨论】:

  • 尝试掷骰子("停在这里!");在 getLogout 函数的请求下,看看你是否正在通过它。我不是 100% 但也许你需要把 '/' 放在 url('/logout') 中。
  • 是的,死确实有效。并且没有死,它确实重定向到'/'(根页面)有问题吗?
  • 根据文档,flush() 删除会话中的所有数据。我在我的 laravel 应用程序中使用这条路线。 Route::get('logout', 'Auth\AuthController@logout');通常它可以工作:)

标签: php laravel session logout


【解决方案1】:

我也有同样的问题,我用方法1纠正了,我用方法2参考了。

方法一:

Route::get('auth/logout', 'Auth\AuthController@logout');

方法二: 或在 AuthController 构造函数中添加

public function __construct()
{
    $this->middleware('guest', ['except' => ['logout', 'getLogout']]);
}

希望这会清除您的错误。我有同样的问题,我一个人喜欢这个

Session Destroy 必须这样使用

Session::forget('name');
$request->session()->flush(); // in your Controller

【讨论】:

  • 你好,方法2已经到位,仍然面临问题
  • 还是没有运气!我做了: Session::forget('name'); $request->session()->flush();验证::注销();返回重定向('/');
  • 用这个试试Route::get('logout', [ 'uses' =&gt; 'Auth\AuthController@getLogout', 'as' =&gt; 'logout' ]);
【解决方案2】:

尝试在 routes.php 中更改路由:

Route::get('logout', 'Auth\AuthController@logout');

对于我使用的注销路线:

{{ url('/logout') }}

通常这是有效的,如果你需要使用不同的控制器来做一些特别的事情,请尝试使用:

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

在控制器中。 遵循 Laravel 5.2 文档 -> https://laravel.com/docs/5.2/session.

其他近似,尝试修改控制器中的顺序,也许它会起作用。根据文档, Auth:logout() 将清除所有用户身份验证数据,然后您可以清除其他会话数据。

public function getLogout()
{
    //$this->auth->logout();
    Auth::logout();
    Session::flush();
    return redirect('/');
}

【讨论】:

  • 嗯。有什么东西搞砸了。 :D 你有没有评论过旧路线并将新路线放在后面?您还有其他退出方式吗?
  • 是的,我确实评论了旧路线并添加了新路线。并且没有其他退出方式
  • 控制器函数中的操作顺序如何更改,请查看更新后的答案。
猜你喜欢
  • 2017-01-26
  • 2015-09-30
  • 2015-04-29
  • 1970-01-01
  • 1970-01-01
  • 2016-09-21
  • 2021-06-15
  • 2023-04-08
  • 2023-03-10
相关资源
最近更新 更多