我正在symfony2上构建一个REST API,我不确定什么是管理不同安全级别的最佳方法。
例如,api/v1/philosophies
会将所有的phylosophies列出到经过身份验证的客户端。未注册的最终用户可以看到列表:“理想主义,现实主义,存在主义,......”。
但最终用户需要获得授权(注册和登录)才能通过api/v1/user/{userID}/favorites
访问他们喜爱的哲学家。
我一直在使用FOSUserBundle,FOSRestBundle和FOSOAuthServerBundle阅读和测试内容,但我找到的所有信息都是用户总是登录以获取令牌,整个api受到客户端和用户的保护。
有什么想法吗?
有些轻松吗?请?
答案 0 :(得分:1)
FOSRest和FOSAuth可以很好地满足您的需求,看起来您需要更改security.yml中定义访问的方式。您始终必须登录才能访问资源的唯一原因是资源受到保护。如果您有一个要允许匿名访问的资源,那么在security.yml中创建该条目,如下所示:
security:
access_control:
- { path: ^/api/v1/pilosophies$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/v1, roles: IS_AUTHENTICATED_FULLY }
这样可以在不登录的情况下访问/api/v1/pilosophies
,但所有其他资源仍然会受到保护。您可以在文档Securing specific url patterns
最后,您决定哪些资源受到保护。 FOSOAuth与该决定无关。