情况:
FOSUserBundle已设置并且在尝试通过/login
等登录时可以正常工作。我还看到自己已通过身份验证,所以这里一切都很好。
还设置了FOSOAuthServerBundle,通过/oauth/v2/token
获取令牌以及使用身份验证标头访问/api/demo
路由都是有效的。
我想要的:
能够使用身份验证标头访问/api/demo
(例如,从移动应用访问API),以及访问使用form_login进行身份验证的路由(防火墙main
)。
问题:
问题是,这对我不起作用,并且我在互联网上找不到解决方案。在使用防火墙/api/demo
进行身份验证的浏览器中访问路由main
会使我的访问被拒绝。
重新排序防火墙对我也不起作用。
config/security.yml
:
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
oauth_token:
pattern: ^/oauth/v2/token
security: false
api:
pattern: ^/api
fos_oauth: true
stateless: true
anonymous: false
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
logout: true
anonymous: true
access_control:
- { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/, role: ROLE_USER }
使用:
symfony/symfony v3.4.0
friendsofsymfony/oauth-server-bundle 1.6.1
friendsofsymfony/user-bundle v2.1.2