Использование системы входа в систему drupal для другой платформы


Я хочу создать еще один сайт, который использует систему входа/регистрации пользователей drupal, чтобы он был интегрирован с моим сайтом drupal. Это позволит текущим пользователям использовать эту другую услугу без необходимости повторной регистрации. Может кто-нибудь дать мне знать, возможно ли это? Совместное использование файлов cookie для входа / регистрация / проверка пользователя... и т.д.

Я использую drupal 7.

 3
Author: Amar H-V, 2012-06-17

1 answers

Модуль Служб предоставляет HTTP REST API для аутентификации (среди прочего). Таким образом, должно быть легко использовать, чтобы удаленный/отдельный сайт повторно использовал аутентификацию пользователя вашего веб-сайта Drupal. Следующий код взят из его документации и иллюстрирует, как использовать его для аутентификации пользователя. Возвращаемый объект пользователя будет содержать имя сеанса и идентификатор для использования в будущем запросе REST, если потребуется больше данных из Drupal (например, для извлечения пользователя профиль или контент).

// REST Server URL
$request_url = 'http://your-drupal/rest_server_endpoint/user/login';

// User data
$user_data = array(
  'username' => 'user_name',
  'password' => 'user_password',
);
$user_data = http_build_query($user_data);

// cURL
$curl = curl_init($request_url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json')); // Accept JSON response
curl_setopt($curl, CURLOPT_POST, 1); // Do a regular HTTP POST
curl_setopt($curl, CURLOPT_POSTFIELDS, $user_data); // Set POST data
curl_setopt($curl, CURLOPT_HEADER, FALSE);  // Ask to not return Header
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_FAILONERROR, TRUE);

$response = curl_exec($curl);
$http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);

// Check if login was successful
if ($http_code == 200) {
  // Convert json response as array
  $logged_user = json_decode($response);
}
else {
  // Get error msg
  $http_message = curl_error($curl);
  die($http_message);
}
 4
Author: Pierre Buyle, 2012-06-17 16:04:06