ApiPlatform + JwtAuthenticationBundle
ApiPlatform + JwtAuthenticationBundle
我正在尝试使用 JwtAuthenticationBundle 配置 api 平台,在 Symfony 4 应用程序之上,没有 FOSUserBundle。
我希望能够使用 swagger 界面。
# config/packages/api_platform.yaml
api_platform:
swagger:
api_keys:
- { name: 'Authorization', type: 'header' }
mapping:
paths: ['%kernel.project_dir%/src/Entity']
和我的安全文件:
# config/packages/security.yaml
security:
encoders:
App\Entity\User:
algorithm: bcrypt
providers:
db_provider:
entity:
class: App\Entity\User
property: username
firewalls:
login:
pattern: ^/api/login
stateless: true
anonymous: true
provider: db_provider
form_login:
check_path: /api/login_check
username_parameter: _username
password_parameter: _password
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
require_previous_session: false
main:
pattern: ^/api
provider: db_provider
stateless: true
anonymous: true
lexik_jwt: ~
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
access_control:
- { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api, roles: IS_AUTHENTICATED_FULLY }
如果我遵循 doc,我将无法看到我的 swagger 页面,我在 /api 上有一个 401 - 错误的凭据。我无法通过 swagger UI 上的 "Authorize" 按钮登录。
我必须替换,在访问控制部分: - { path: ^/, roles: [ ROLE_READER ] }
由 - { path: ^/, roles: [ IS_AUTHENTICATED_ANONYMOUSLY ] }
这样做。
不知道是我missunderstand/missconfigure什么的,还是文档有误
谢谢!
我找到的唯一方法是修改 access_control,在第二个路径中添加斜杠:
access_control:
- { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/, roles: IS_AUTHENTICATED_FULLY }
我正在尝试使用 JwtAuthenticationBundle 配置 api 平台,在 Symfony 4 应用程序之上,没有 FOSUserBundle。
我希望能够使用 swagger 界面。
# config/packages/api_platform.yaml
api_platform:
swagger:
api_keys:
- { name: 'Authorization', type: 'header' }
mapping:
paths: ['%kernel.project_dir%/src/Entity']
和我的安全文件:
# config/packages/security.yaml
security:
encoders:
App\Entity\User:
algorithm: bcrypt
providers:
db_provider:
entity:
class: App\Entity\User
property: username
firewalls:
login:
pattern: ^/api/login
stateless: true
anonymous: true
provider: db_provider
form_login:
check_path: /api/login_check
username_parameter: _username
password_parameter: _password
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
require_previous_session: false
main:
pattern: ^/api
provider: db_provider
stateless: true
anonymous: true
lexik_jwt: ~
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
access_control:
- { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api, roles: IS_AUTHENTICATED_FULLY }
如果我遵循 doc,我将无法看到我的 swagger 页面,我在 /api 上有一个 401 - 错误的凭据。我无法通过 swagger UI 上的 "Authorize" 按钮登录。
我必须替换,在访问控制部分: - { path: ^/, roles: [ ROLE_READER ] }
由 - { path: ^/, roles: [ IS_AUTHENTICATED_ANONYMOUSLY ] }
这样做。
不知道是我missunderstand/missconfigure什么的,还是文档有误
谢谢!
我找到的唯一方法是修改 access_control,在第二个路径中添加斜杠:
access_control:
- { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/, roles: IS_AUTHENTICATED_FULLY }