首先,让我描述一下应用程序:我们正在开发一个基于网络的软件,它是一种自定义帮助台应用程序。它要求用户登录(我们使用FOSUserBundle)。登录后,用户被重定向到仪表板。从仪表板不再有页面重新加载,前端基于Angularjs构建,用户无需重新加载页面即可在应用程序中的任何地方获取信息。你可以说一个单一的页面应用程序。REST API和客户端在同一台服务器上,需要API认证?
因此,呈现给用户的数据是从其余API(我们使用FOSRestBundle)获取的。这一点在这方面效果很好。
存在某种困境。只有我们的工作人员才能访问此应用程序(现在)。因此,工作人员需要登录才能访问帮助台。通过angularjs推送到前端的数据通过api调用,因此刚刚登录的用户需要在每个请求上再次进行身份验证,因为其余的都是。
问题:因为后端上的Symfony2运行让我们只是试图让当前登录用户对象的用户,当一个API调用时:
$this->get('security.context')->getToken()->getUser()
回报匿名。是代表匿名,或者
$this->getUser();
回报只是空。
因此,使用其余api时,已验证的上下文似乎已消失。但是,当我直接调用一个动作而不休息时,我可以获取用户信息。
因此,我们需要的是确保我们的休息API,并获得每个API调用的用户信息。我们不希望第三方人员访问我们的应用程序,只是工作人员。我不熟悉OAuth,但用户将被重定向到第三方页面以允许/拒绝访问他的数据?这对我们来说不是一个选择。
根据这些信息,您是否有任何建议或想法如何保护api并传输用户数据,以便getUser不会返回null或anon。但真正登录的用户?
很难猜测什么是错的......那肯定是在你的代码或配置错误的...但没有看到任何显示的代码在防火墙中的错误,怎么能人知道吗? – mpm 2013-04-25 22:06:07
@mpm thx回复,看看我的编辑 – 2013-04-26 08:06:15