gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:56:33 24 4
gpt4 key购买 nike

我为我的 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/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com