【问题标题】:How to return the user to same page after logging out in laravel在laravel中注销后如何将用户返回到同一页面
【发布时间】:2018-04-12 19:24:44
【问题描述】:

我有访客和经过身份验证的用户可以访问的路由,但问题是如何在单击注销按钮后将登录的用户返回到同一页面而不是主页?

【问题讨论】:

标签: php laravel authentication


【解决方案1】:

如@onix 所说,要摆脱这个问题。只需添加一个隐藏的输入并检查它是否在注销方法中退出。

public function logout(Request $request)
{
    $this->guard()->logout();
    $request->session()->invalidate();
    if($request->has('go_back')) {
         return redirect()->back();
    }
    return redirect('/');
}

<form action="{{ route('signout') }}" method="POST">
    {{ csrf_field() }}
    @if(\Route::current()->getName() == 'freedom'))
        <input type="hidden" name="go_back">
    @endif
    <button type="submit">Logout</button>
</form>

【讨论】:

  • 所以这包括会话、额外输入、额外变量会更好吗?
  • 不,它只是为了演示。您只需要返回输入。
  • 这将确保用户不会像你之前所说的那样在所有情况下都被重定向。
【解决方案2】:

*假设您使用身份验证。

  1. 转至:your_project\vendor\laravel\framework\src\Illuminate\Foundation\Auth\ AuthenticatesUsers.php

  2. 找到logout函数,把返回改成back();

但您认为这是不好的做法,因为您可能会将用户返回到未经授权的页面,他会收到错误异常。

【讨论】:

  • 是的,我有一个更好的解决方案。只需一秒钟。
  • 不应修改供应商文件。
  • 如果您不知道自己在做什么,我同意。
猜你喜欢
  • 1970-01-01
  • 2011-11-07
  • 2013-02-19
  • 2014-01-18
  • 1970-01-01
  • 2017-01-26
  • 1970-01-01
  • 2015-01-06
  • 2014-07-23
相关资源
最近更新 更多