注销模拟用户后返回模拟用户

时间:2017-08-20 12:02:37

标签: php laravel laravel-5.4

要在laravel中实现身份验证作为其他用户机制,我正在使用404labfr/laravel-impersonate包。

冒充其他用户的罚款。但是,在模拟用户注销父用户(模仿用户)注销后,我正在寻找一种解决方案,在模拟用户注销后返回到模仿用户会话。

甚至似乎没有任何内置方法。

无论如何,现在我不知道如何解决这个问题。如果有人知道请帮助我。

2 个答案:

答案 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();来注销他。