php - 使用 lexik 将公共数据添加到 JWT 响应
问题描述
我目前正在使用带有 lexik 的 Symfony 5,当我生成 JWT 令牌时,我希望得到响应以获取令牌和用户名,这样我就可以得到这样的东西:
{
"username":"username"
"token": "token"
}
我当然尝试在这里使用文档:https ://github.com/lexik/LexikJWTAuthenticationBundle/blob/master/Resources/doc/2-data-customization.md#eventsauthentication_success---adding-public-data-to- the-jwt-response但是每当我在 Postman 中测试它时,我仍然只能得到令牌,而且我完全被困在做什么......
我的事件监听器:
<?php
namespace App\EventListener;
use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
class AuthenticationSuccessListener
{
/**
* @param AuthenticationSuccessEvent $event
*/
public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
{
$data = $event->getData();
$user = $event->getUser();
if (!$user instanceof UserInterface) {
return;
}
$data['data'] = array(
'username' => $user->getUsername(),
);
$event->setData($data);
}
}
services.yaml 中的服务
acme_api.event.authentication_success_listener:
class: App\EventListener\AuthenticationSuccessListener
tags:
- { name: kernel.event_listener, event: lexik_jwt_authentication.handler.authentication_success, method: onAuthenticationSuccessResponse }
任何帮助将不胜感激
解决方案
尝试在侦听器中添加用户界面使用,这可能是因为您没有抛出 if 语句:
use Symfony\Component\Security\Core\User\UserInterface;
推荐阅读
- javascript - 防止节点从 DOM 中移除
- pgadmin - 我无法在我的系统上打开 pgAdmin 应用程序
- javascript - 如何在firestore中查询同一集合上的多个字段
- python - AWS signedURL 与 AWS Transfer Acceleration 使用 boto3
- php - Foreach 循环无法获取设置权限所需的所有数据
- regex - 正则表达式在某个标识符之后查找字符串?
- python - 查找以某个字符开头的行块
- azure-functions - Azure 函数 v3 设置中来自 local.settings.json 的嵌套对象
- javascript - 基于光标接近度的 HTML5 Canvas 元素颜色变化
- unity3d - 在 Unity AR Foundation/Arkit 中将真实对象与 3D 模型对象进行比较