我的应用程序中有一个自定义用户检查器(https://symfony.com/doc/current/security/user_checkers.html),用于检查登录用户是否处于活动状态。
用户可以在我的应用程序中创建文档。 但是,有一个单独的服务用于创建文档的屏幕截图并从中生成 PDF。
这个单独的服务总是登录到 API“模拟”文档的作者。
问题:
我想要什么: 我希望我的用户检查器(checkPostAuth)检查[帐户是否处于非活动状态?]仅当 JWT 令牌的自定义范围不等于“mySpecialScope”时
如何实现?
如果您使用的是 Lexik,您可以尝试将其添加到您的用户检查器类中:
use Lexik\Bundle\JWTAuthenticationBundle\Services\JWTTokenManagerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
//...
public function __construct(TokenStorageInterface $tokenStorageInterface, JWTTokenManagerInterface $jwtManager)
{
$this->jwtManager = $jwtManager;
$this->tokenStorageInterface = $tokenStorageInterface;
}
然后,使用这个在
checkPostAuth
中获取JWT数据:
$decodedJwtToken = $this->jwtManager->decode($this->tokenStorageInterface->getToken());