사용자가 등록하려고 할 때 외부 정보 저장소 (예 : 웹 서비스 호출 또는 디렉토리 서버 조회)를 사용하여 정보가 유효한지 확인하고 싶습니다.).Drupal의 외부 ID 저장소를 사용하여 등록 데이터 확인
기존 모듈을 사용할 수 있습니까? 그렇지 않은 경우이 기능을 개발하는 가장 좋은 방법은 무엇입니까?
사용자가 등록하려고 할 때 외부 정보 저장소 (예 : 웹 서비스 호출 또는 디렉토리 서버 조회)를 사용하여 정보가 유효한지 확인하고 싶습니다.).Drupal의 외부 ID 저장소를 사용하여 등록 데이터 확인
기존 모듈을 사용할 수 있습니까? 그렇지 않은 경우이 기능을 개발하는 가장 좋은 방법은 무엇입니까?
내가 지정 유효성 검사를 추가 할 수 있도록 기존 모듈의 인식 아니지만,이 hook_user()
의 '검증'조치를 사용하여이를 구현하기 매우 쉬운 :
function yourModule_user($op, &$edit, &$account, $category = NULL) {
// Are we in the validation phase of a new user registration?
if ('validate' == $op && 'user_register' == $edit['form_id'] && 'account' == $category) {
// Yes, do custom validation...
// NOTE: Just an example to validate by email.
// Check the other elements in $edit array (e.g. 'name') for more options
$mail_is_valid = yourModule_custom_mail_validation($edit['mail']);
// Is the mail address OK?
if (!$mail_is_valid) {
// No, set error on mail form field
form_set_error('mail', t('your custom error message'));
}
}
}
이 등록 절차를 중지 할 것 yourModule_custom_mail_validation()
이 TRUE를 리턴하지 않는 한 메일 필드의 오류 메시지와 함께 등록 양식을 다시 표시하십시오. 코드가 다음 모든 사용자 편집 양식 제출 출마하지 - 당신은 또한 자신의 계정을 편집 기존 사용자를 위해 일 할 수있는 검증을 원하는 경우에 절은 경우
, 당신은 처음부터
&& 'user_register' == $edit['form_id']
부분을 삭제할 수 등록 즉시.
LDAP 서버를 사용하여 인증하는 경우 LDAP module이 있습니다. 그것을 확인하십시오.
다른 웹 서비스로 인증하려면 모듈을 작성하고 hook_user, 특히 '로그인'사례를 구현해야합니다. 로그인 할 때 사용자의 자격 증명이 웹 서비스의 자격 증명과 일치하지 않으면 로그 아웃하여 메시지를 표시 할 수 있습니다.
+1 그리고'hook_user' 권고안에 대해서,하지만 'login on check'부분에 대해서는 동의하지 않습니다. 확인 작업은 '확인'작업을 사용하여 * 로그인/등록 전에 * 수행되어야합니다. 그렇게하면 사용자는 처음에 로그인하지 않으므로 다시 로그 아웃 할 필요가 없습니다 - 별도의 답변에서 본 예를 참조하십시오. –
흥미 롭습니다 ... 나는 api.drupal.org의 "validate"문서에서 그걸 발견하지 못했을 것입니다. 조금 더 명확 해지기 위해 재 작성이 필요한 것처럼 보입니다. 그래도 고마워. – theunraveler
@theunraveler : 여기에서 오해를 피하기 위해 - 'validate'액션 중에 form_set_error()를 사용하면 * registration * 이후의 로그인을 막을 수 있습니다. 이는 등록 양식이 유효성을 검사하기 때문입니다 그걸 확인하지 마라). 기존 사용자의 * login *을 방지하는 데는 효과가 없습니다.이 경우 접근 방식이 옵션이 될 수 있습니다 (로그인 양식에 사용자 정의 유효성 검사 콜백을 추가하는 대신). –