Php 如何让用户在登录laravel后返回同一页面

Php 如何让用户在登录laravel后返回同一页面,php,laravel,authentication,Php,Laravel,Authentication,我有可供来宾和经过身份验证的用户访问的路由,但问题是如何在单击注销按钮后将登录的用户返回到同一页面而不是主页 *假设您使用auth 转到:your\u project\vendor\laravel\framework\src\illumb\Foundation\Auth\AuthenticatesUsers.php 找到logout函数,只需将返回更改为back() 但是你认为这是一种不好的做法,因为你可能会将用户发送回未经授权的页面,他会得到一个错误异常 就像@onix所说的那样解决这个问题。

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

*假设您使用auth

  • 转到:
    your\u project\vendor\laravel\framework\src\illumb\Foundation\Auth\AuthenticatesUsers.php

  • 找到
    logout
    函数,只需将返回更改为
    back()


  • 但是你认为这是一种不好的做法,因为你可能会将用户发送回未经授权的页面,他会得到一个错误异常

    就像@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>
    
    公共功能注销(请求$Request)
    {
    $this->guard()->logout();
    $request->session()->invalidate();
    如果($request->has('go\u back')){
    返回重定向()->back();
    }
    返回重定向('/');
    }
    {{csrf_field()}}
    @如果(\Route::current()->getName()=='freedom'))
    @恩迪夫
    注销
    
    到目前为止您尝试了什么?我正在寻找一个内置功能来处理这个问题。可能是的,我有一个更好的解决方案。请稍等。不应修改供应商文件。如果您不知道自己在做什么,我同意。因此,这包括会话、额外输入、额外变量更好?不,这只是为了演示。您只需要返回输入。这将确保用户不会像您之前所说的那样在所有情况下都被重定向。