2015-12-15 15 views
6

Zum einen wechseln, melde ich mich als Benutzer X, und ich habe eine Funktion wie:Wie Authentifizierung von einem Benutzer zu einem anderen mit Laravel

public function loginAs($userId) 
{ 
    Auth::loginUsingId($userId); // now use Y user 
    return response()->json(['logged' => Auth::check(), 'user' => Auth::user()]); 

} 

und wenn ich versuche, Auth::check() auszudrucken gibt es TRUE die Es ist in Ordnung, bis jetzt bin ich als Benutzer Y angemeldet, die Sache ist, dass ich zuerst als X-Benutzer anmelden und dann zu einem anderen Y-Benutzer wechseln, aber wenn ich einige andere Funktionen aufrufen, scheint es, dass der aktuelle Benutzer immer noch X angemeldet ist, und ich möchte Y sein, der aktuelle Benutzer geloggt ... Das könnte etwas mit Session zu tun haben oder ich weiß nicht genau, wie man das Ding macht, wäre dankbar, wenn jemand eine Probe hat oder eine Idee, wie man so etwas erreicht ngs in Laravel 5.

+0

Sie sagen, dass mit Benutzer Y nach dem Einloggen, 'Auth :: Benutzer()' noch die X-Benutzer zurückkehrt? Was ist das Ergebnis von 'dump (Auth :: loginUsingId ($ userId));'? – Bogdan

+1

Haben Sie 'Auth :: logout()' vor 'Auth :: loginUsingId ($ userId)'? – user2094178

+0

Probieren Sie dieses http://laravel-tricks.com/tricks/temporary-user-switching aus –

Antwort

4

Können Sie es ausarbeiten? Ich konnte den Benutzer wechseln mit dem folgenden:

use Auth; 

class TempController extends Controller 
{ 

    public function index() { 
     $user = User::find(1); 
     Auth::login($user); 
     var_dump(Auth::user()->id); // returns 1 
     Auth::logout(); 

     var_dump(Auth::user()); // returns null 

     $user = User::find(2); 
     Auth::login($user); 
     var_dump(Auth::user()->id); // returns 2 
     Auth::logout(); 

    } 
} 

routes.php

Route::get('/temp', '[email protected]'); 

Wenn Sie dies ausführen, können Sie die in Benutzer-ID Änderungen protokolliert sehen.

+0

Gute Lösung. Sie können auch einen Parameter angeben, damit Sie auswählen können, welches Konto Sie auch wechseln möchten: 'Route :: get ('debug/hopacc/{id}', 'ProfileController @ debughop') -> name ('debug.hop') ; ' ' öffentliche Funktion debughop ($ id) { $ user = Benutzer :: find ($ id); Auth :: Login ($ Benutzer); return redirect ('customer/account/edit') -> mit ('user'); } 'edit: stelle sicher, dass der Benutzer zuerst existiert :) –

Verwandte Themen