api - Symfony2 api 的身份验证(供移动应用程序使用)

标签 api authentication authorization symfony mobile-application

我为我的 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)。

我有同样的问题,我做了什么:

  • 在您的 app/config/security.yml 中,添加:
  • 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/

    相关文章:

    android - 使用 Android SDK 的 Spotify 长期登录

    java - JSF 身份验证和授权

    api - Google 日历 API 移动事件

    api - Paypal 什么时候发回自定义变量?

    php - laravel 5.2 登录后重定向到预期的网址

    javascript - 如何在 React 中保持高级用户状态同步?

    javascript - 使用自定义端点扩展现有 API

    api - 在 golang 中获取 oauth 用户 token 时出现 400 错误?

    authentication - 如何授权root运行gsutil?

    macos - 将授权服务与 NSTask 结合使用