2017-08-20 1 views
0

Um eine Authentifizierung als andere Benutzer Mechanismus in Laravel zu implementieren, verwende ich 404labfr/laravel-impersonate Paket.zurück zu Imitator Benutzer nach Abmeldung impersonierter Benutzer

Imitieren, wie andere Benutzer arbeitet Geldbußen. Aber nachdem sich ein angemeldeter Benutzer abmeldet, meldet sich der übergeordnete Benutzer (Benutzer des Imitators) ebenfalls ab, während ich nach einer Lösung suche, die nach der Impersonierung der Benutzerabmeldungen zur Impersonator-Benutzersitzung zurückkehrt.

Es scheint sogar, dass es keine eingebaute Methode dafür gibt.

Wie auch immer, jetzt weiß ich nicht, wie ich dieses Problem lösen kann. Wenn jemand weiß, bitte hilf mir.

+0

Warum nicht einfach eine neue Sitzung für den Imitatorbenutzer erstellen? Tut mir leid, dass ich die erwähnte Bibliothek nie verwende. –

Antwort

0

Ich weiß nicht, ob dieses Skript funktioniert oder nicht, aber Sie können dieses versuchen.

Zuerst müssen Sie die Middleware erstellen und dieses Skript kopieren.

<?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'); 
    } 
} 

Second Sie in den Kernel und fügen Sie in routemiddleware wie in diesem Beispiel

'prevent-back-history' => \App\Http\Middleware\PreventBackHistory::class, 

Und das letzte, können Sie in Ihre Middleware-Route hinzufügen, dass rufen hinzufügen können.

Ich hoffe, das ist funktioniert und helfen Sie Ihre Probleme.

0

fand ich, dass meine gewünschte Ergebnis wie folgt tun:

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');*/ 
     } 

In den Logout-Operationen muss zunächst prüfen, ob aktuelle Benutzer oder nicht imitierten, wenn ja $manager->leave(); verwendet wird, sollte ihn abzumelden.

Verwandte Themen