Laravel - 忘记会话中以前的 url

Laravel - forget previous urls in session

情况:

在我们的系统中,从管理员中注销用户只会将他们从管理部分中注销,我们希望他们从应用程序中注销(我们正在为 laravel 使用 encore 管理包)。我创建了一个新的注销 class 来覆盖默认的管理员注销,并运行标准的 laravel 注销。这成功地将用户从系统中注销并返回到登录屏幕。

问题:

问题是在第一次尝试重新登录时,用户被重定向到注销方法,然后 returns 他们进入登录屏幕(在浏览器的网络选项卡中验证了这一点)

问题:

如何让 laravel 忘记这个 URL 并像新登录一样处理,或者是否有更好的方法来处理这个注销?

这是我的代码:

routes.php 文件:

$router->get('auth/logout', 'AdminAuthController@logout');

AdminAuthController:

namespace App\Admin\Controllers;

use Encore\Admin\Controllers\AuthController;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;

class AdminAuthController extends AuthController
{
use AuthenticatesUsers {
    logout as logoutUser;
}

 public function logout(Request $request) {
    //runs the Encore/Admin logout function
    parent::getLogout();

    //runs standard logout to logout user after admin logout
    $this->logoutUser($request);

    //redirect to home whcih will be login page since user is logged out
    return redirect('/');
 }
}

父函数:

/**
 * User logout.
 *
 * @return Redirect
 */
public function getLogout()
{
    Auth::guard('admin')->logout();

    session()->forget('url.intented');

    return redirect(config('admin.prefix'));
}

解决方案:

我知道这可能不是最佳解决方案,但它会起作用并且通常合乎逻辑。

在我的身份验证方法中(所以 post 登录)我检查预期的 URL 字符串,如果它包含单词注销,我重定向到应用程序的根页面.. 因为逻辑上登录,你永远不应该访问注销。

if(str_contains(redirect()->intended($this->redirectPath())->getTargetUrl(), 'logout')){
        return redirect('/');
    }
return redirect()->intended($this->redirectPath());

我仍然愿意改进,所以如果有人有更好的想法,请post他们!