首页 / 帖子
Drupal如何实现一卡通登录?(第三方用户登录)

就是通过第三方的用户数据库,比如学生的一卡通信息库,如何实现登录到Drupal系统里面?

2个答案
发布于:2016-09-13 18:50

最简单的做法是,
1. 实现form_alter() ,添加一个自定义的validate。

project_form_alter(&$form, &$form_sate, $form_id) {
  if ($form_id == 'user_login' || $form_id == 'user_login_block') {
    array_unshift($form['#validate'], 'project_user_login_validate');
  }
}

2. 写validate函数,其中如果验证通过,赋值给$form_sate['uid']即可,其他不需要做

project_user_login_validate ($form, &$form_state) {
  
 $username = $form_state['values']['name'];
 $response = project_authentication_check_user($username, $form_state['values']['pass'] );
 if ($response != false)  {
     user_external_login_register($username, 'project_authentication' );
     $account = user_external_load($username);
     $form_state['uid'] = $account->uid;
  } 
  // else drop through to the end and return nothing - Drupal will handle the rejection for us   
  //不通过,可以不用管,drupal会继续处理。
}

3. 写自定义认证函数

function project_authentication_check_user($name,$password){
  //根据用户名和密码,或者查询其他数据库,检查用户是否合法。
}


AnnyO
发布于:2016-09-19 16:27

可以用drupal的cas模块试试