Итак, у меня есть 2 проекта, оба в Symfony. Один из них - наш бэкэнд (для внутреннего использования), а другой - наш веб-интерфейс (основной сайт). В нашем бэкэнде у нас работают все наши сущности и платформа API, и все, что мы делаем / нуждаемся в нашем интерфейсе, мы используем наш API.
В настоящее время я работаю над входом в систему, и в основном у нас есть сущность (называемая Contact
) и эта сущность содержит адрес электронной почты, пароль и некоторые другие детали.
При входе в систему должен использоваться и API, поскольку ни одна из наших сущностей и тому подобное не находятся в нашем интерфейсе. Кто-то еще, кто начал его, очевидно, думал об использовании JWT для аутентификации.
В нашем security.yaml у нас есть следующий код для входа в систему (на нашем бэкэнде):
login:
pattern: ^/api/login
stateless: true
anonymous: true
provider: app_customer_provider
json_login:
check_path: /api/login_check
username_path: email
password_path: password
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
В нашем интерфейсе , У меня есть следующий код:
$response = $client->request('POST', 'http://cms.shieldingsystems.local/api/login_check', [
'headers' => [
'X-AUTH-TOKEN' => 'REAL',
],
'json' => $form->getData()
]);
$content = json_decode($response->getContent(false));
if (property_exists($content, 'code') && $content->code === 401) {
$this->addFlash('danger', $content->message);
} else {
dump($content);
}
Вход в систему работает нормально, он показывает ошибку, когда данные для входа в систему от правильного объекта не верны, и когда они есть, он будет сбрасывать $content
. Проблема в том, что $content
содержит только токен и токен refre sh.
Я знаю, что токен может быть декодирован и будет содержать пользователя. Я взял токен, расшифровал его онлайн с помощью JWT-декодера и получил следующие данные:
{
"iat":1584619604
"exp":1584623204
"roles":[]
"username":"..."
}
Как я могу сделать так, чтобы все пользовательские данные были в токене, а не только роли и логин? И нужно ли для чего-нибудь использовать токен refre sh? И если да, то как бы я это использовал?