Авторизация JWT cakephp не работает в производстве

Здравствуйте, у меня проблемы с аутентификацией ADmad/JwtAuth.Jwt с приложением Cakephp 3.x на рабочем сервере.

Я установил приложение Cakephp в нескольких средах разработки и работает так, как ожидалось. Моя проблема возникает, когда я пытаюсь запустить его на веб-хостинге. Я уже пробовал два, получив одну и ту же ошибку 401 (Unauthorized) на обоих из них (ehost и dreamhost)

Для установки я следовал этому руководству: http://www.bravo-kernel.com/2015/04/how-to-add-jwt-authentication-to-a-cakephp-3-rest-api/

Как я уже сказал, локально и в среде разработки работает отлично. Итак, есть ли какие-либо другие мысли, что веб-хостинг должен заставить это руководство работать? Какие-либо предложения?


person Alejandro    schedule 14.11.2015    source источник


Ответы (1)


Решите, добавив свойство "sub".

https://tools.ietf.org/html/rfc7519#section-4.1.2

public function token()
{
    $user = $this->Auth->identify();

    if (!$user) {
        throw new UnauthorizedException('Invalid username or password');
    }

    $this->set([
        'success' => true,
        'data' => [
            'token' => $token = JWT::encode(
                [
                    'id' => $user['id'],
                    'sub' => $user['id'],
                    'exp' => time() + 604800,
                    'iat' => time()
                ],
                Security::salt()
            )
        ],
        '_serialize' => ['success', 'data']
    ]);
}
person Ryo Uemoto    schedule 23.11.2015
comment
У меня та же проблема, но у меня уже есть сабвуфер. Есть ли что-нибудь еще, что вам нужно было сделать, чтобы заставить его работать на производстве? Локально все работает нормально. - person bstras21; 22.11.2016