#drupal #authentication #drupal-6 #login
#drupal #drupal-6 #аутентификация
Вопрос:
Я работаю над проектом Drupal, где пользовательский модуль используется для перенаправления пользователей на другой домен для аутентификации, и я хотел перенаправить страницу / user на этот внешний сервер аутентификации, если пользователь не вошел в систему. Как мне это сделать?
Ответ №1:
Вы можете зафиксировать условие в hook_init, приняв статус входа с помощью user_is_anonymous(), а затем с помощью 1-го аргумента запроса ‘user’.
<?php
/**
* Implements hook_init().
*/
function mycustommodule_init() {
// if 1st argument is user, and they are not logged in, send them away
if (user_is_anonymous() amp;amp; arg(0) == 'user') {
drupal_goto('http://example.com/login');
}
}
Если бы вы могли аутентифицироваться за кулисами с помощью PHP, вы также могли бы сделать вход незаметным, используя hook_user с операцией ‘login’.
Ответ №2:
Я уверен, что вы могли бы использовать некоторую комбинацию rules
модуля и actions
и triggers
конфигурации.
Когда пользователь находится на странице / user и они не вошли в систему, перенаправьте на x.
Ответ №3:
В качестве примеров модулей, реализующих внешнюю аутентификацию, вы могли бы посмотреть на OpenID.module и http_auth_ext.module.
OpenID использует user_external_load(), для чего, вероятно, требуется использовать user_external_login_register().
Внешняя HTTP-аутентификация использует hook_init().
function http_auth_ext_init() {
global $user;
// Call authentication on any page if it has not been already completed
if (! $user->uid amp;amp; ! $_COOKIE['http_auth_ext_complete']) {
http_auth_ext_login($_SERVER['REMOTE_USER']);
}
}