我使用类似文档的配置。这是我的安全文件:
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: [ROLE_USER]
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
login:
pattern: ^/api/login
stateless: true
anonymous: true
json_login:
check_path: /api/login_check
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
api:
pattern: ^/api
provider: fos_userbundle
stateless: true
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
access_control:
- { path: ^/api/login_check, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api, roles: IS_AUTHENTICATED_FULLY }
和我的路由文件
api_login_check:
path: /api/login_check
当我在浏览器中进入/ api / login_check时出现错误
无法找到路径“ / api / login_check”的控制器。路由配置错误。
有什么主意吗?
答案 0 :(得分:1)
使用以下命令更改您的security.yml登录防火墙配置:
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
从您的访问控制中删除login_check路径,它应该已经配置
- { path: ^/api/login_check, roles: IS_AUTHENTICATED_ANONYMOUSLY }
答案 1 :(得分:0)
您需要调整访问控制配置:
access_control:
- { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api, roles: IS_AUTHENTICATED_FULLY }
我非常确定您为此使用了API平台,如果您read the documentation here,您会看到登录URL上的访问控制在^/login
中使用path
,而不是{{ 1}}