【发布时间】:2018-02-22 02:16:33
【问题描述】:
情况:
在我们的系统中,从 Admin 注销用户只是将他们从 admin 部分注销,我们希望他们从应用程序注销(我们使用 laravel 的 encore 管理包)。我创建了一个新的注销类,它覆盖了默认的管理员注销,并运行了标准的 laravel 注销。这成功地将用户从系统中注销并将他们返回到登录屏幕。
问题:
问题是在第一次尝试重新登录时,用户被重定向到注销方法,然后将他们返回到登录屏幕(在浏览器的网络选项卡中验证了这一点)
问题:
如何让 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'));
}
【问题讨论】:
-
您是否尝试在注销时删除预期的网址?
Session::forget('url.intended'); -
我做到了。它在父函数中,我现在将添加该代码以更明确。谢谢。
标签: php laravel session login logout