symfony - HWIOAuthBundle add token attribute after success auth
问题描述
I use HWIOAuthBundle for Symfony.
HWI\Bundle\OAuthBundle\Security\Core\Authentication\Provider\OAuthProvider.php has function "authenticate" where create and return OAuthToken.
public function authenticate(TokenInterface $token){
...
$token = new OAuthToken($oldToken->getRawToken(), $user->getRoles());
$token->setResourceOwnerName($resourceOwner->getName());
$token->setUser($user);
$token->setAuthenticated(true);
$token->setRefreshToken($oldToken->getRefreshToken());
$token->setCreatedAt($oldToken->getCreatedAt());
return $token;
}
I need set some attribute to this OAuthToken like :
$token->setAttribute('name' => 'value');
How can i do this ?
I use service with only one function "loadUserByOAuthUserResponse" which return user object :
class PartnerEntityUserProvider implements OAuthAwareUserProviderInterface{
...
public function loadUserByOAuthUserResponse(UserResponseInterface $response){
...
return $user;
}
...
}
Edited
I found solution with using service on security.interactive_login event :
config/services.yaml
services:
App\EventListener\InteractiveLoginListener:
tags:
- { name: kernel.event_listener, event: security.interactive_login }
src/EventListener/InteractiveLoginListener.php
<?php
namespace App\EventListener;
use App\Entity\Perimetre;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
class InteractiveLoginListener
{
private $security;
private $entityManager;
public function __construct(Security $security, EntityManagerInterface $entityManager)
{
$this->security = $security;
$this->entityManager = $entityManager;
}
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
$this->security->getToken()->setAttribute('perimetre', $this->entityManager->getRepository(Perimetre::class)->findOneBy(['id' => $this->security->getToken()->getUser()->getFiliale()->getPerimetre()->getId()]));
}
}
解决方案
推荐阅读
- r - .I want to do a pairwise.t.test of every column against every column in a dataframe
- json - 使用 null 解析嵌套数组
- visual-studio-2019 - Visual Studio 2019 will only Targets 2.0 Framework for Class Libraries
- spring-boot - activeMQ 在 /proc 中创建了数千个文件
- sql - Neo4j ETL 工具:连接失败。SQL 状态:S0001
- javascript - gamedig 玩家名单不和谐?
- azure-functions - Azure Functions - 将 NodeJS 切换到 .Net Core 并保留 URL
- c# - Alea Gpu 可以只复制数组中的最后一个元素吗?
- pandas - 断言一个整数在熊猫系列的列表中
- python - 如何在进程仍在运行时写入进程标准输入并从其标准输出读取?