我为我的 Symfony2 应用程序开发了一个 REST api。此 api 将由移动应用程序使用。大部分功能是在当前经过身份验证的用户的上下文中完成的,即:
$this->container->get('security.context')->getToken()->getUser()
我希望移动应用程序能够像传统的 Web 表单一样发布到登录操作。如果凭证 checkout ,那么 Symfony2 会执行此操作并设置一个 cookie(这甚至可以在移动应用程序访问 api 的上下文中工作吗?)。然后稍后来自该手机的 api 请求将(希望)与 native symfony2 security.context 服务容器一起使用。
这行得通吗?在将 API 提供给移动开发人员之前,我需要弄清楚这个授权过程。如果可能的话,我显然希望能够使用 native security.context 服务,而不是为使用 xAuth 或类似东西的 api 构建一个新的身份验证系统。
谢谢
最佳答案
我认为你应该做到无状态(没有cookie)。
我有同样的问题,我做了什么:
security: ... firewalls: rest_webservice: pattern: /webservice/rest/.* stateless: true http_basic: provider: provider_name ...
- Now you can make a request to your webservice:
class AuthTest extends WebTestCase
{
public function testAuthenticatedWithWebservice()
{
$client = $this->createClient();
// not authenticated
$client->request('GET', '/webservice/rest/url');
$this->assertEquals(401, $client->getResponse()->getStatusCode());
// authenticated
$client->request('GET', '/webservice/rest/url', array(), array(), array(
'PHP_AUTH_USER' => 'username',
'PHP_AUTH_PW' => 'password'
));
$this->assertEquals(200, $client->getResponse()->getStatusCode());
}
}
关于api - Symfony2 api 的身份验证(供移动应用程序使用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6752250/