사용자 등록 후 자동 로그인


15

내 목적에 맞게 수정 된 플러그인을 사용하고 있습니다.

내가 따르는 것은 사용자가 자동으로 로그인하여 현재 페이지로 돌아가도록 등록한 후입니다. 현재 사용자 이름과 비밀번호가 포함 된 이메일을 보냅니다. 그런 다음 해당 세부 정보를 사용하여 로그인해야합니다.


기본 등록 양식 또는 사용자 정의 양식을 사용하고 있습니까?
Bainternet

사용자 지정이지만 리디렉션을 기반으로하므로 기본 시스템에서 작동하도록 설계된 코드가 제대로 작동 할 수 있으며 그렇지 않을 경우 수정할 수 있습니다.
Robin I Knight

등록시 사용자 자동 로그인은 로그인 보안의 일부를 우회한다는 점을 지적해야한다고 생각합니다. 일반적으로 사용자는 유효한 이메일 주소를 제공하지 않으면 로그인 할 수 없습니다. 사용자는 등록하고 이메일을받은 다음 로그인해야합니다. 이메일 단계를 제거하면 사용자가 가짜 주소로 등록하고 자동으로 로그인하며 기본 가입자가 할 수있는 모든 일을 백엔드, 댓글에 올릴 수 있습니다. 누가 혜택을 볼 수 있습니까? 하나의 스패머. 해커는 공개 할 수있는 주소를 제공하지 않고도 백엔드에 구멍을 뚫고 싶어합니다.
s_ha_dum

답변:


10

기본적으로 사용자를 로그인하려면 다음을 사용할 수 있습니다.

            //Login the user
    $creds = array();
    $creds['user_login'] = $login;
    $creds['user_password'] = $password;
    if ( !empty( $remember ) ){ 
        $creds['remember'] = true;
    }
    $user = wp_signon( $creds, true );

그러나 비밀번호와 로그인이있는 경우에만 자신의 등록 양식을 작성하고 처리하여 사용자를 직접 작성할 수 있습니다.

//Only after Everything has been validated, proceed with creating the user
        //Create the user
        $user_pass = wp_generate_password();
        $user = array(
            'user_login' => $username,
            'user_pass' => $user_pass,
            'first_name' => $firstname,
            'last_name' => $lastname,
            'user_email' => $email
        );
        $user_id = wp_insert_user( $user );

        /*Send e-mail to admin and new user - 
        You could create your own e-mail instead of using this function*/
        wp_new_user_notification( $user_id, $user_pass );

여기에 로그인과 비밀번호가 있으므로 사용자를 로그인 할 수 있습니다.

도움이 되었기를 바랍니다


2
후크 할 수있는 등록 필터가 없습니까?

1
까다로운, 내가 통합 할 수 있는지 보자. 더 쉬운 방법은 없습니다. 나는 wordpress가 이메일을 보낼 때 편리한 get_the_password ()를 제공하는 데 관심이 없다고 생각합니다.
Robin I Knight

5

등록 과정에 이상적인 장소는 없습니다. 핵심에 사용자 등록 이벤트 작업 후크를 추가하는 강력한 사례가 있다고 생각합니다. 그러나 그 동안 가짜로 만들 수 있다고 생각합니다. 사용자가 성공적으로 등록 할 때 발생하는 마지막 작업 중 하나는 'default_password_nag'라는 사용자 옵션을 만드는 것입니다. 이를 감시하는 액션을 생성하고 설정되면 사용자를 설정할 수 있습니다.

add_action('update_user_metadata', 'my_auto_login', 10, 4);

function my_auto_login( $metaid, $userid, $key, $value ) {
    // We only care about the password nag event. Ignore anything else.
    if ( 'default_password_nag' !== $key  && true !== $value) {
        return;
    }

    // Set the current user variables, and give him a cookie. 
    wp_set_current_user( $userid );
    wp_set_auth_cookie( $userid );
}

이론적으로는 테스트되지 않았지만 작동해야합니다.

이제해야 할 일에 대한 아이디어를 얻었으므로 이것이 보안 상 나쁜 생각이라고 생각합니다. 정크 메일 보관함을 설정하는 데 어려움을 겪지 않아도 정크 계정을 만들 수 있습니다. :)


1
user_register는 연결하기에 아주 좋은 곳입니다.
jsims281

1

난 그냥 사용하여 작업하는 기능 얻을 관리했습니다 user_register 후크를 내에서 다음 코드 functions.php를 :

// auto log in a user who has just signed up       
function auto_login_new_user( $user_id ) {
  wp_set_auth_cookie( $user_id, false, is_ssl() );
}
add_action( 'user_register', 'auto_login_new_user' );

그래도 등록 확인을 위해 이메일을 보내야합니까? 더 이상받지 않습니다.
codecowboy

0
function login_after_register($userlogin,$userpass){
    $credentials = array( 'user_login' =>  $userlogin, 'user_password' => $userpass, 'remember' => true );

    $secure_cookie = is_ssl();

    $secure_cookie = apply_filters('secure_signon_cookie', $secure_cookie, $credentials);
    add_filter('authenticate', 'wp_authenticate_cookie', 30, 3);

    $user = wp_authenticate($credentials['user_login'], $credentials['user_password']);
    wp_set_auth_cookie($user->ID, $credentials["remember"], $secure_cookie);
    do_action('wp_login', $user->user_login, $user);
}

1
코드와 함께 설명을 제공하십시오.
s_ha_dum
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.