如何使用Laravel将身份验证从一个用户切换到另一个用户


How to switch Authentication from one user to another using Laravel

首先,我以用户X的身份登录,我有一个类似于的功能

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

当我尝试打印出Auth::check()时,它会返回TRUE这很好,到目前为止,我现在以用户Y的身份登录,问题是,我首先以X用户的身份登录然后切换到另一个Y用户,但当我调用其他函数时,似乎当前登录的用户仍然是X,我想成为Y,即当前记录的用户。。。这可能与会话有关,或者我不知道该怎么做,如果有人有任何样本或想法如何在Laravel 5中实现这些目标,我将不胜感激。

你能详细说明吗?我能够使用以下方式切换用户:

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', 'TempController@index');

如果运行此程序,您可以看到登录用户的id更改。

您应该使用模拟有一篇关于这个的博客文章http://blog.mauriziobonani.com/easily-impersonate-any-user-in-a-laravel-application/