[英]Tymon JWT: how can I authenticate from authenticated user with another user via his id?
圖書館: https : //github.com/tymondesigns/jwt-auth
當我以管理員身份(例如)進行身份驗證時,我想為另一個用戶進行身份驗證/獲取新令牌。 因此,想象一個前端,您在其中單擊用戶並獲取該用戶的令牌(如果您是管理員)。
所以,這是我的方法:
public function authenticate_as(Request $request)
{
$user = auth()->user();
if ($user && $user->role->role === 'admin') {
$data = json_decode($request->getContent(), true);
$user_id = $data['user_id'];
$repository = new UsersRepository();
$new_user = $repository->show($user_id);
//$token = auth()->tokenById($user_id);
$token = auth()->login($new_user);
return $this->respondWithToken($token);
}
return response()->json([
'error' => 'Unauthorized'
], 403);
}
你可以看到我的嘗試$token = auth()->tokenById($user_id)
和$token = auth()->login($new_user);
.
在這兩種情況下,經過身份驗證的管理員用戶的 id == 1 和 $user_id 是 2。最后,我得到的有效負載令牌具有 sub == 1,所以......我是新的管理員,擁有另一個令牌......
當然在用戶表 id 2 中存在...
那么,如何在不知道密碼但知道他的 ID 的情況下為另一個用戶獲取令牌?
編輯:來自某個會話的問題。 因為當我預授權其他用戶(管理員)時,新令牌的 sub 具有第一個用戶的 ID,而不是新用戶的 ID。 沒有以前的身份驗證,我沒有這個問題。 所以,我需要消除所有會話......或者強制 Tymon/JWT 忘記當前用戶(但通過“注銷”我得到列入黑名單的令牌異常)......
public function login()
{
$token = Auth::login(User::find(1));
return response([
'status' => 'success',
'token' => $token,
])->header('Authorization', $token);
}
因此,您必須保存此令牌或覆蓋現有令牌。 如果在前端存儲用戶數據,重新授權后必須重新獲取
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.