我目前正在使用带有 lexik 的 Symfony 5,当我生成 JWT 令牌时,我希望响应能够为我提供令牌和用户名,这样我就可以得到如下内容:
{
"username":"username"
"token": "token"
}
Run Code Online (Sandbox Code Playgroud)
我当然尝试使用这里的文档: 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);
}
}
Run Code Online (Sandbox Code Playgroud)
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 }
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激
尝试在侦听器中添加用户界面使用,可能会因为以下原因而无法抛出 if 语句:
use Symfony\Component\Security\Core\User\UserInterface;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3546 次 |
| 最近记录: |