簡體   English   中英

Tymon JWT:我如何通過他的 id 從經過身份驗證的用戶向另一個用戶進行身份驗證?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM