如果我将我的路线放在jwt.auth midleware中,这已经让我疯狂了2个小时似乎无法修复它。我希望以另一个用户身份登录,而我已经使用Laravel中的LoginUsingId()函数从我的管理仪表板以管理员身份登录,如果我不将令牌作为参数传递,它可以正常工作,但我必须保护我的api使用jwt令牌所以我不能删除midleware jwt.auth ..无论如何,即使路由在midleware jwt.auth中,我还能使它工作吗?
工作示例:
//Login as other User
Route::post('users/loginas/{userId}', ['as' => 'login_as', 'uses' => 'UserController@loginAs']);
Route::get('classes/{class_id}/market_feeds', ['as' => 'show_market_feeds', 'uses' => 'MarketFeedController@index']);
Route::group(['middleware' => 'jwt.auth'], function () {
})
不工作:
Route::group(['middleware' => 'jwt.auth'], function () {
//Login as other User
Route::post('users/loginas/{userId}', ['as' => 'login_as', 'uses' => 'UserController@loginAs']);
Route::get('classes/{class_id}/market_feeds', ['as' => 'show_market_feeds', 'uses' => 'MarketFeedController@index']);
})
用于切换用户的我的控制器如下:
public function loginAs($userId)
{
Auth::logout();
Auth::loginUsingId($userId, true);
return response()->json(['logged' => Auth::check(), 'user' => Auth::user()->username, 'id' => Auth::user()->id]);
}
效果很好,我可以看到用户详细信息...但是当我尝试拨打另一个电话时调用此功能:
public function displaySomethingElse($classId)
{
return response(array('username'=>Auth::user()->username,'id' => Auth::user()->id));
}
它返回admin用户,而不是我想要的特定用户......
我希望我足够清楚。
答案 0 :(得分:1)
您可以遵循的一种方法是根据用户对象生成令牌并返回该令牌。并且,使用返回的令牌进行下一次调用。
您使用的库有generating tokens based on user object
选项您可以传递您要登录的用户的id
或任何其他标识符。请记住,此调用为admin
。接收来自用户对象的响应令牌,并使用此令牌进行下一次调用。这使您以要登录的用户身份登录。
如果您不明白我想说的话,请随时发表评论。