要在laravel中实现身份验证作为其他用户机制,我正在使用404labfr/laravel-impersonate包。
冒充其他用户的罚款。但是,在模拟用户注销父用户(模仿用户)注销后,我正在寻找一种解决方案,在模拟用户注销后返回到模仿用户会话。
甚至似乎没有任何内置方法。
无论如何,现在我不知道如何解决这个问题。如果有人知道请帮助我。
答案 0 :(得分:0)
我不知道这个脚本是否有效,但你可以尝试这个。
首先,您必须创建中间件并复制此脚本。
<?php
namespace App\Http\Middleware;
use Closure;
class PreventBackHistory
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
return $response->header('Cache-Control','nocache, no-store, max-age=0, must-revalidate')
->header('Pragma','no-cache')
->header('Expires','Sun, 02 Jan 1990 00:00:00 GMT');
}
}
其次你可以添加到内核中并像这个例子一样添加到routemiddleware中
'prevent-back-history' => \App\Http\Middleware\PreventBackHistory::class,
最后,您可以添加到您的中间件路由中来调用它。
我希望这个有效并帮助你解决问题。
答案 1 :(得分:0)
我发现可以做到我想要的结果:
public function doLogout ()
{
if (Auth::check()) {
if (Auth::user()->isImpersonated()) {
$manager = app('impersonate');
$impersonatorID = $manager->getImpersonatorId();
$manager->leave();
Auth::loginUsingId($impersonatorID);
return ['success' => true];
}
Auth::logout();
return ['success' => true];
} else {
return ['success' => false];
}
/*return Redirect::to('admin/login');*/
}
在注销操作中,首先必须检查当前用户是否已被模拟,如果是,则应使用$manager->leave();
来注销他。