use*_*432 7 symfony lexikjwtauthbundle api-platform.com
我想在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
Run Code Online (Sandbox Code Playgroud)
而我的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
Run Code Online (Sandbox Code Playgroud)
有点晚了,但是我遇到了同样的问题。您的安全配置表明,任何以/api身份验证开头的路由都需要身份验证,包括身份验证/api。如果要将文档保留在/api路由中,请在安全配置中添加斜杠;
firewalls:
...
api:
pattern: ^/api/
Run Code Online (Sandbox Code Playgroud)
和
access_control:
- { path: ^/api/, roles: IS_AUTHENTICATED_FULLY }
Run Code Online (Sandbox Code Playgroud)
这将留给/api公众使用,同时需要提供有效的令牌/api/*。
或者,您可以保留安全配置不变,然后将文档移动到其他URL(例如/docs)。为此,您可能需要根据其他规则将其添加/docs为IS_AUTHENTICATED_ANONYMOUSLY路径access_control。
然后,在可访问文档页面时,单击页面顶部的“ 授权”按钮并输入Bearer <valid JWT token>。
我可以解决我的问题。就我而言,问题是在公共和私人 openssl 密钥中。首先我修复了它,第二个是编码问题。我使用下面的来源来实现结果。只需查看 LexikJWTAuthenticationBundleSandbox下面的链接即可
| 归档时间: |
|
| 查看次数: |
2912 次 |
| 最近记录: |