Moodle Принимает вход с внешнего сайта


Мы добавляем Moodle на наш сайт (другой сервер, другой поддомен, но тот же основной домен, и серверы настроены так, чтобы они могли взаимодействовать друг с другом), и мы хотим, чтобы он делал следующее:

  • Пользователь получает доступ к основному сайту
  • Пользователь входит в систему
  • Пользователь нажимает ссылку на Moodle
  • Пользователь автоматически входит в Moodle без необходимости повторного ввода своей информации
  • Если пользователь делает закладки или напрямую обращается к Moodle, он все равно может войти в систему прямо там

Мы уже настроили его с помощью db auth (аутентификация внешней базы данных), поэтому учетные записи с основного сайта также работают для Moodle, я просто понятия не имею, как заставить Moodle принять существующие учетные данные и автоматически войти в систему пользователя.

 6
Author: awestover89, 2013-04-15

1 answers

Итак, я смог решить эту проблему и подумал, что поделюсь своим решением на случай, если у кого-нибудь еще возникнет подобная проблема в будущем.

Поскольку наш сайт Moodle и основной сайт находятся в одном домене, то, что я сделал, было в сценарии входа на наш основной сайт, я добавил следующий код:

$postData = array('username' => $username, 'password' => $password);
$post = http_post_fields('http://moodle.example.com/login/index.php', $postData);
$headers = http_parse_headers($post);
foreach($headers['Set-Cookie'] as $cookie)
{
    $details = http_parse_cookie($cookie);
    foreach ($details->cookies as $name => $value)
        setcookie($name, $value, $details->expires, $details->path, 'example.com');
}

В принципе, я разместил учетные данные для входа в скрипт входа moodle с использованием http_post_fields, хотя CURL также должен работать, проанализировал заголовки, чтобы получить набор файлов cookie Moodle, затем установите эти файлы cookie самостоятельно, используя базовый домен вместо более конкретного поддомена Moodle. Это может вызвать некоторые проблемы, если у пользователя есть существующий файл cookie из более конкретного поддомена, поэтому обязательно удалите все существующие файлы cookie с именем MoodleSession.

 10
Author: awestover89, 2013-04-17 15:26:57