jwt-auth после обновления - получить пользователя из токена запроса - PullRequest
3 голосов
/ 09 апреля 2020

Я обновил:

"tymon / jwt-auth": "0.5. *",

с очень старой версии, и кажется, что API изменился. Мне удалось исправить вход в систему, используя:

public function login(Request $request)
    {

        $credentials = $request->only(['username', 'password']);

        $validator = Validator::make($credentials, [
            'username' => 'required',
            'password' => 'required',
        ]);

        if($validator->fails()) {
            throw new ValidationHttpException($validator->errors()->all());
        }


        if (!$token = auth()->attempt($credentials)) {
            return response()->json(['error' => 'Unauthorized'], 401);
        }

        $user = auth()->user();
        $user->ip_address = $request->ip();
        if ($request->device_token)
        $user->device_token = $request->device_token;
        $user->save();

        $data['token'] = $token;
        $data['email'] = $user->email;

        return response()->json($data);
    }

Итак, мой вход в систему работает, но все API, для которых требовался токен, теперь не работают.

Пример сбоя API:

class UserController extends Controller
{

    public function __construct()
        {
            // $this->middleware('auth:api', ['except' => ['login']]);
        }


        public function enterWorld(Request $request)
        {

            $token = $request->input('token');
            $user = JWTAuth::toUser($token);
            return $user;

        }

Есть идеи, как преобразовать токен из запроса к пользователю с помощью нового API? Я не смог найти никаких документов об этом.

Я пытался:

return response () -> json (auth () -> user ());

но в этом API он возвращает пустой массив. только в логине это работает.

1 Ответ

1 голос
/ 09 апреля 2020

Попробуйте следующее:

$user = JWTAuth::setRequest($request)->user();

Вы также можете явно установить защиту при использовании следующего синтаксиса:

// pass the guard in to the auth() helper.
return response()->json(auth('jwt')->user());
...