Drupal 6 CAS "клиент" не будет входить автоматически - PullRequest
1 голос
/ 10 января 2012

Я бы хотел, чтобы три сайта Drupal работали вместе, используя CAS. Итак, один из этих сайтов Drupal использует серверный модуль CAS; но когда я захожу на другие сайты Drupal в качестве «клиента» CAS, мне все равно приходится нажимать «Войти», чтобы войти в систему.

Возможно ли, чтобы клиент CAS проверял автоматически? Таким образом, пользователям не придется нажимать кнопку «Войти», если они уже вошли в систему? И, если это не так, они могут остаться анонимными.

Ответы [ 3 ]

0 голосов
/ 13 января 2012

Как один из сопровождающих модуля cas я хотел бы попросить перенести это обсуждение на проблему в очереди проблем проектов.Этот фрагмент кода не должен делать ничего другого, так как использование «CheckAuthentication» должно вызывать вход в систему drupal.Если у вас другое поведение, мы хотим узнать об этом и исправить это.

0 голосов
/ 15 января 2012

Оказывается, эта функция работает в модуле CAS, но «Режим кэширования» должен быть установлен на «Отключено».См. Выпуск: http://drupal.org/node/1280474

Кроме того, проверка подлинности происходит только при первом доступе к сайту (до тех пор, пока браузер не будет закрыт и повторно открыт).Смотрите выпуск: http://drupal.org/node/1405448

0 голосов
/ 13 января 2012

Хорошо, я понял это.Он называется « функция шлюза » в CAS.

Моя путаница заключалась в том, что модуль Drupal CAS работал не так, как я думал.Вот что говорит клиентская часть модуля Drupal CAS:

[x] Обратитесь к серверу CAS, чтобы убедиться, что пользователь уже вошел в систему?

Это реализует функцию шлюза протокола CAS.

Итак, копаясь в коде модуля, я смог найти решение.

Исправление:

Функция phpCAS, которая реализует функцию шлюза CAS:

Здесьэто фрагмент кода, который я планирую использовать:

$is_auth = phpCAS::checkAuthentication(); // Returns TRUE or FALSE
if ($is_auth) {
  phpCAS::forceAuthentication();
}
else {
  // Do nothing until user is ready to authenticate.
}

У меня есть пара вариантов:

  • Поместите эту функциональность в отдельный модуль "клей"
  • Взломайте модуль Drupal CAS в соответствии с моими потребностями
  • Попытайтесь внести улучшения и посмотрите, можно ли это внести обратно

(Если мне повезет, я могу внести свой вкладвернемся к этому модулю.)

...