所以我有两个项目,都在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
仅包含一个令牌和一个刷新令牌。
我知道令牌可以被解码并包含用户。我拿了令牌,使用JWT解码器在线对其进行了解码,并得到了以下数据:
{
"iat":1584619604
"exp":1584623204
"roles":[]
"username":"..."
}
如何使所有用户数据不仅包含角色和用户名,而且包含在令牌中? 我是否需要对任何事物使用刷新令牌?如果是这样,我将如何使用它?