如何使用 JWT 进行身份验证并接收用户对象(不同项目中的 API)?

问题描述 投票:0回答:1

我有两个 Symfony 7.1 项目 - 一个提供 API(名为“core” - 使用 API Platform v4 和 JWT Lexik Bundle),另一个是基于 Web 的前端来访问数据(名为“仪表板”)。用户登录仪表板,仪表板通过 HTTP 请求向核心请求 Json Web 令牌 (JWT)。

我了解到 JWT Lexik Bundle 的目标是提供 API 的项目(在我的例子中是核心)。然而,我很难理解客户端是否可以有一些东西(在我的例子中是仪表板),它有助于检索 JWT 并将其转换为包含角色等的

UserInterface
对象。

这对于 Symfony 项目来说是可能的,还是我应该通过另一个 API 调用手动检索角色?双方使用 Lexik 捆绑包会有帮助吗?

php symfony jwt lexikjwtauthbundle
1个回答
0
投票

我正在使用 Lexik 从 Auth0 创建的令牌进行身份验证,该令牌的有效负载结构与 Lexik 自己的令牌略有不同,因此我必须创建一个实现 JWTUserInterface 的自定义用户类,但您的配置在其他方面应该几乎相同。

检查无数据库用户提供程序的文档。像这样的东西应该对你有用。在

config/packages/security.yaml
中,告诉 Symfony 从 Lexik 获取其用户信息:

security:
    # Register the JWT provider.
    providers:
        jwt:
            lexik_jwt: ~
    # Tell Symfony to use the JWT provider for this case.
    firewalls:
        main:
            jwt: ~
            provider: jwt
            stateless: true
    # Now your user object should have roles like normal.
    access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }
© www.soinside.com 2019 - 2024. All rights reserved.