首页 / 帖子
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