Warning: Undefined array key "HTTPS" in include() (line 29 of /opt/www/fdv2/drupal.stage/web/sites/default/settings.local.php).
include('/opt/www/fdv2/drupal.stage/web/sites/default/settings.local.php') (Line: 4)
require('/opt/www/fdv2/drupal.stage/web/sites/drupal001.net/settings.php') (Line: 145)
Drupal\Core\Site\Settings::initialize('/opt/www/fdv2/drupal.stage/web', 'sites/drupal001.net', Object) (Line: 1099)
Drupal\Core\DrupalKernel->initializeSettings(Object) (Line: 701)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Drupal的CAS模块如何让admin(uid=1)用户也通过CAS登录? - Drupal大学 - Drupal问答论坛
首页 / 帖子
Drupal的CAS模块如何让admin(uid=1)用户也通过CAS登录?

因为一个Drupal站点配置好之后,默认的admin(uid是1)的用户必须有,这样admin用户就没办法自动创建了,用admin在cas登录之后,报错。

这个怎么办?我想让整站的所有用户都通过CAS登录,谢谢各位!

1个答案
赵高欣
发布于:2015-02-04 10:53

最简单的办法:

在CAS的client站点,编辑用户,选择CAS tab,给admin添加一个CAS username即可。

另外,如果有一批用户,可以通过SQL的方式一次性搞定

INSERT INTO cas_user (uid, cas_name)
SELECT u.uid AS uid, u.name as cas_name
FROM users u
WHERE uid <> 0 AND NOT EXISTS (SELECT cas_name FROM cas_user c WHERE c.cas_name = u.name);

还可以通过hook的方式关联一下没有关联的用户,同样的username即可。

<?php
function CUSTOM_cas_user_alter(&$cas_user) {
  $cas_name = $cas_user['name'];

  if (cas_user_load_by_name($cas_name) === FALSE) {
    // No existing user could be found by CAS username.

    $account = user_load(array('name' => $cas_name));
    if ($account && $account->uid) {
      // We found an existing user with the same username, add a CAS username.
      cas_user_operations_create_username(array($account->uid));
    }
  }
}
?>

参考: https://www.drupal.org/node/1261232