我有一个Symfony 2.8网络应用程序,就像用户实体的FosUserBundle API和用于身份验证的Fosoauthserver一样。
我的security.yml是这样的:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
oauth_token:
pattern: ^/oauth/v2/token
security: false
oauth_authorize:
pattern: ^/oauth/v2/auth
form_login:
provider: fos_userbundle
check_path: /oauth/v2/auth_login_check
login_path: /oauth/v2/auth_login
anonymous: true
api:
pattern: ^/v1
fos_oauth: true
stateless: true
switch_user_stateless: true
anonymous: false
access_control:
- { path: ^/v1/register, role: IS_AUTHENTICAIS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/v1/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/v1, role: IS_AUTHENTICATED_FULLY }
我可以注册用户并登录,正确获取access_token,但是当我尝试访问我的API的任何端点时,我可以在不登录的情况下访问。
甚至,如果我在标题中设置了正确的访问令牌,如果我执行$ this-> getUser(),我会得到null,因为在任何时候我的应用程序都在进行身份验证检查。
有什么想法吗?我制作了不同的API,从来没有遇到过这个问题。 谢谢!