gpt4 book ai didi

symfony - API 平台 - 具有 JWT 身份验证的 Swagger UI

转载 作者:行者123 更新时间:2023-12-02 06:28:54 35 4
gpt4 key购买 nike

我想在 Swagger 上添加“授权”按钮,如下所述:https://api-platform.com/docs/core/jwt#documenting-the-authentication-mechanism-with-swaggeropen-api

我安装了 LexikJWTAuthenticationBundle,它与 Curl 配合得很好。但是当我浏览到http://localhost:8000/api时,我只看到 {"code":401,"message":"JWT Token not found"}

我错过了什么吗?

这是我的security.yaml:

security:
encoders:
App\Entity\User:
algorithm: bcrypt
providers:
db_provider:
entity:
class: App\Entity\User
property: username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
api_login:
pattern: ^/api/login
stateless: true
anonymous: true
form_login:
check_path: /api/login_check
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
require_previous_session: false
api:
pattern: ^/api
stateless: true
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
main:
pattern: ^/
anonymous: ~
provider: db_provider
form_login:
login_path: app_security_login
check_path: app_security_login
csrf_token_generator: security.csrf.token_manager
logout:
path: /logout
target: /
remember_me:
secret: '%kernel.secret%'
lifetime: 604800
path: /

access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api, roles: IS_AUTHENTICATED_FULLY }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }

role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

access_decision_manager:
strategy: unanimous

还有我的api_platform.yaml:

api_platform:
title: 'My project'
version: '0.0.1'
mapping:
paths: ['%kernel.project_dir%/src/Entity']
swagger:
api_keys:
apiKey:
name: Authorization
type: header

最佳答案

有点晚了,但我也遇到了同样的问题。您的安全配置表明任何以 /api 开头的路由需要身份验证,其中包括 /api本身。如果您想将文档保留在/api上路由,在安全配置中添加尾部斜杠;

firewalls:
...
api:
pattern: ^/api/

access_control:
- { path: ^/api/, roles: IS_AUTHENTICATED_FULLY }

这将留下/api可公开访问,同时需要为 /api/* 提供有效 token .

或者,您可以保留安全配置不变,move the documentation to a different URL (例如 /docs )。为此,您可能需要添加 /docs作为IS_AUTHENTICATED_ANONYMOUSLY access_control下的路径取决于您的其他规则。

然后,当可以访问文档页面时,单击页面顶部的授权按钮并输入 Bearer <valid JWT token> .

关于symfony - API 平台 - 具有 JWT 身份验证的 Swagger UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48880227/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com