我在Symfony2上构建REST API,我不确定是管理不同安全级别的最佳方法。
- 未经验证的客户端(无权访问API数据的应用程序或网站)无法从API 获得(获取,放置,发布等)数据
- 已验证的客户端将能够从API中请求某些数据,但与用户相关的数据无关。
- 另一方面,最终用户需要以某种方式登录以访问API的某些私人资源。
例如,api/v1/philosophies
会将所有系统粒细胞列为身份验证的客户端。未注册的最终用户可以看到列表:"唯心主义,现实主义,存在主义,……"。但是最终用户需要获得授权(注册和记录)才能通过api/v1/user/{userID}/favorites
访问他们喜欢的系统粒细胞。
我一直在阅读和测试FosuserBundle,FosrestBundle和FosoAuthServerVerverBundle,但是我发现的所有信息都始终将用户记录在以获取令牌,以获取令牌,并且整个API都受到客户端和用户的保护。
有什么想法吗?
有些光?
请?
fosrest和fosauth可以按照您的需求正常工作,看起来您需要更改在security.yml中定义访问的方式。您始终必须登录以访问资源的唯一原因是资源受到保护。如果您有要允许匿名访问的资源,请在Security.ym中进行该条目,类似的内容:
security:
access_control:
- { path: ^/api/v1/pilosophies$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/v1, roles: IS_AUTHENTICATED_FULLY }
这将使/api/v1/pilosophies
无需登录即可访问,但是所有其他资源仍然会受到保护。您可以在确保特定URL模式的文档中阅读有关此信息的更多信息
最后,您是决定哪些资源受到保护的。Fosoauth与该决定无关。