如何在drupal Services模块中使用会话身份验证

时间:2014-10-14 14:38:07

标签: drupal drupal-7 drupal-modules drupal-services

我有Drupal 7和Services 3.x(3.10)。 在/ admin / structure / services页面中,我创建了一个端点和我的自定义模块:

function webServices_services_resources() {
$api = array(
'customers' => array(
    'retrieve' => array(
     'help' => 'Retrieves posted blogs',
     'callback' => '_webServices_retrieve',
     'access arguments' => array('access content'),
     'access arguments append' => FALSE,
     'args' => array(
         array(
           'name' => 'id',
           'type' => 'int',
           'description' => 'The id of the note to get',
           'source' => array('path' => '0'),
           'optional' => FALSE,
         ),
       ),
      ),
    ),
  );
return $api;
}

现在我向我的base_url / endpoint / user / login.json发送POST请求(传递用户名和密码),然后获取session_name和session_id。

如果我使用以下标题调用(例如)base_url / endpoint / customers / 1.json:

User-Agent: Fiddler
Content-Type: application/json
Host: liburna3.alpha-si.org
Cookie: SESS738851ba4e98ab1f17a7252513dc0719=hy5xVjlDzjIbXz-nlwEV4GywbAPAPL0d_aFGhtIRWzw

我收到错误403:用户xxxxxxxxx的访问被拒绝

有什么问题?

1 个答案:

答案 0 :(得分:1)

我会检查我的身份验证状态,调用base_url / endpoint / system / connect。

如果您未登录(或标题不正确),则会返回:

<div id="chart"></div>

如果您已登录,则会返回结果的用户属性中的完整userdatat。

我为几乎所有的drupal服务调用设置了一个测试站点。&gt;您可以输入basepath和endpoint并测试后端。 在这里找到=&gt; http://www.drupalionic.org/explore/

输入您的数据,然后转到资源 - &gt;服务3.x - &gt;单击系统并单击连接选项卡。

你也可以在这里为drupal服务找到一个功能齐全的角度lib =&gt; https://github.com/BioPhoton/ng-drupal-7-services