Веб-служба с аутентификацией на уровне приложения и пользователя
Мне нужно создать сайт Drupal (D6 или D7 в порядке) с API. Модуль Услуг является очевидным выбором, но я пока не мог понять, возможно ли делать то, что я хочу.
Мой сайт будет содержать пользователей и список мобильных приложений, которые известны сайту. У каждого пользователя есть "журнал активности" на сайте (возможно, представление узлов, где тип = активность и пользователь = текущий пользователь). Пользователи могут использовать одно или несколько из этих приложений на своих мобильных устройствах. Когда пользователь что-то делает с приложением, приложение должно подключиться к сайту через API и написать сообщение (т. Е. создайте узел "активность") в журнале действий пользователя.
Насколько я могу судить, мне понадобится два уровня аутентификации. На уровне приложения мобильное приложение должно идентифицировать себя как одно из известных приложений. На уровне пользователя пользователь должен войти в систему под своим именем пользователя и паролем, чтобы убедиться, что его действия будут занесены в правильный журнал действий.
У меня есть еще не выяснен лучший способ сделать это с помощью Сервисов и связанных с ними модулей. Я надеюсь, что кто-нибудь сможет мне сказать:
- если это можно сделать;
- какая версия услуг мне нужна;
- какие связанные модули можно использовать для аутентификации;
- как их настроить.
Спасибо!
1 answers
В соответствии с D6, использование Сервисов 3.x
Возможно, будет проще учесть, что:
- Аутентификация пользователя должна обрабатываться непосредственно Службами (OAuth/API/Сессия)
- Использование определенного мобильного приложения является разрешением:
- в вашем модуле в определении ресурсов добавьте аргумент access_callback и аргументы доступа:
Код:
/**
* Implementation of hook_services_resources().
*/
function mymodule_api_services_resources() {
return array(
'myresource' => array(
'retrieve' => array(
'callback' => '_mymodule_resource_retrieve',
'access callback' => '_mymodule_api_access',
'access arguments' => array('Use registered mobile app'),
'access arguments append' => TRUE,
...
-
Добавьте соответствующие разрешения в my_module_permission() крюк: Код:
/** * Access callback for the resource. * * @param string $op * The operation that's going to be performed. * @param array $args * The arguments that will be passed to the callback. * @return bool * Whether access is given or not. */ function _mymodule_api_access($op, $args) { ... }
А затем верните значение false, если мобильное приложение не зарегистрировано...