【发布时间】: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