그누보드 4 패스워드 워드프레스 이전 관련
안녕하세요,
그누보드 4의 내용을 워드프레스로 대부분 이전 완료했는데 패스워드가 암호화 방식이 달라서 기존 암호로는 접근이 안되는 문제가 있습니다.
전체를 리셋해서 회원들에게 새 비번을 찾아 가도록 하는 방법도 있긴한데 이것은 역시 회원들의 불편을 초래할 것 같아서 기존 비번으로 접근이 가능하도록 하고 싶은데 혹시 아시는 분 있으시면 도움을 구합니다.
감사합니다.
답변 1개
제가 3년전에 그누보드 5용으로 짰었던 코드입니다.
지금은 제대로 동작하는지 잘 모르겠습니다.
코드를 보시면 도움이 되실겁니다.
사전에 user_meta 테이블에 mb_password 키로 기존의 그누보드 4용 패스워드를 저장해 놓습니다.
그런 다음 add_filter 함수를 이용하여, 워드프레스에서 로그인시 아래 코드를 실행시킵니다.
Copy
//로그인 필터add_filter( 'wp_authenticate_user', 'g5_authenticate_login_filter', 10, 2 );function g5_authenticate_login_filter($user, $password){ global $wpdb; //로그인 패스워드 검사를 미리 한다. if ( isset($user->ID) && !wp_check_password($password, $user->user_pass, $user->ID) ) { $g5_password = get_user_meta($user->ID, 'mb_password'); //user meta에 mb_password필드를 구해온다. //mb_password가 있다면 아래 실행 if( !empty($g5_password[0]) ){ if( $g5_password[0] === g5_sql_password($password) ){ //그누보드5에서 쓰던 비번이 맞다면 wp_set_password($password, $user->ID ); //워드프레스 비밀번호로 바꾼후 delete_user_meta($user->ID, 'mb_password'); //user_meta 에서 더 이상 사용되지 않을 해당 mb_password 필드를 지운다. $g5_user = get_user_by( 'login', $user->user_login ); //변경된 사용자 값을 다시 가져온다 return $g5_user; // 유저 정보를 리턴 } } } return $user;}function g5_sql_password($value){ global $wpdb; // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes $row = $wpdb->get_row(" select password('$value') as pass ", ARRAY_A); return $row['pass'];}
답변을 작성하려면 로그인이 필요합니다.