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他们!
情况:
在我们的系统中,从管理员中注销用户只会将他们从管理部分中注销,我们希望他们从应用程序中注销(我们正在为 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他们!