【问题标题】:How use session authentication in drupal Services module如何在 drupal 服务模块中使用会话身份验证
【发布时间】:2016-04-17 19:21:33
【问题描述】:

我有 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 的访问被拒绝

有什么问题?

【问题讨论】:

  • 你缺少一个 csrf 令牌 - groups.drupal.org/node/358308
  • 我也尝试在标题中添加 X-CSRF-Token: : 0YHNSF62OVt9yttpgMFvbrvSEdTzGvNIqdZ53OY (在登录响应中收到)但我得到相同的结果...没有经过身份验证
  • 如果这是 Drupal 为该登录会话返回给您的令牌,它应该可以工作。总是为我做。如果你完全按照文档描述的那样做,但它不起作用,打开一个关于模块的错误报告……你的代码很可能是错误的
  • 在我的自定义模块中是正确的我如何使用“访问参数”?我没有写“访问回调”

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


【解决方案1】:

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

如果你没有登录(或者你的标题不正确)它会返回:

"sessid": "PfG79I6elMMYln8nyftReLOY0d5So7O0C3LRIdbOeMo",
  "session_name": "SESS74282c529439441e18b575b0e6fe308f",
  "user": {
    "uid": 0,
    "hostname": "2a02:8388:1580:2500:7b:3322:23a4:c902",
    "roles": {
      "1": "anonymous user"
    },
    "cache": 0,
    "timestamp": 1460891635
  }
}

如果您已登录,它将在结果的用户属性中返回完整的用户数据。

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

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

您还可以在此处找到用于 drupal 服务的功能齐全的 Angular 库 => https://github.com/BioPhoton/ng-drupal-7-services

【讨论】:

    猜你喜欢
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多