Înregistrare utilizator urmată de autentificare automată

9 feb. 2011, 20:24:49
Vizualizări: 15.7K
Voturi: 17

Folosesc un plugin modificat pentru nevoile mele.

Ceea ce doresc este ca după ce utilizatorul s-a înregistrat, acesta să fie autentificat automat și redirecționat înapoi la pagina curentă. Momentan, le trimite un email cu numele de utilizator și parola. Apoi trebuie să se autentifice folosind aceste detalii.

4
Comentarii

folosești formularul de înregistrare implicit sau unul personalizat?

Bainternet Bainternet
9 feb. 2011 20:46:50

Unul personalizat, dar este bazat pe redirecționări, așa că codurile concepute să funcționeze cu sistemul implicit ar putea să funcționeze, iar dacă nu, probabil că le pot adapta.

Robin I Knight Robin I Knight
9 feb. 2011 20:57:35

Cred că ar trebui să subliniez că autentificarea automată a unui utilizator la înregistrare ocolesc o parte a securității de conectare. În mod normal, un utilizator nu se poate autentifica fără a furniza o adresă de email validă. Utilizatorul trebuie să se înregistreze, să primească un email, apoi să se autentifice. Dacă elimini pasul cu email-ul, utilizatorii tăi ar putea să se înregistreze cu adrese false, să fie autentificați automat și să aibă acces la backend, să comenteze sau orice altceva pot face abonații tăi standard. Cine ar beneficia? Spammerii, pentru început. Hackerii ar fi încântați să exploreze găurile din backend-ul tău fără a fi nevoie să furnizeze o adresă care ar putea fi revelatoare.

s_ha_dum s_ha_dum
27 mai 2013 02:08:59

Un blog detaliat: http://sforsuresh.in/auto-login-wordpress/

Suresh Kamrushi Suresh Kamrushi
9 ian. 2018 12:44:01
Toate răspunsurile la întrebare 4
2
10

Practic, pentru a autentifica un utilizator puteți folosi:

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

dar asta funcționează doar când aveți parola și numele de utilizator deci puteți crea propriul formular de înregistrare, îl puteți procesa și puteți crea utilizatorul manual

//Doar după ce totul a fost validat, procedați cu crearea utilizatorului
        //Creează utilizatorul
        $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 );

        /*Trimite e-mail administratorului și noului utilizator - 
        Puteți crea propriul e-mail în loc să folosiți această funcție*/
        wp_new_user_notification( $user_id, $user_pass );

și aici avem atât autentificarea cât și parola, astfel încât puteți autentifica utilizatorul.

Sper că acest lucru vă ajută

9 feb. 2011 21:39:51
Comentarii

Nu există un filtru de înregistrare care poate fi conectat?

Zack Zack
9 feb. 2011 22:30:20

Complicat, voi încerca să-l integrez. Deci nu există o cale mai ușoară. Presupun că WordPress nu are interes să ofere o funcție convenabilă get_the_password() deoarece trimite acea informație prin email.

Robin I Knight Robin I Knight
9 feb. 2011 23:00:09
1

Nu există un loc ideal pentru a interveni în procesul de înregistrare. Cred că ar fi util să adăugăm un hook de acțiune pentru înregistrarea utilizatorilor în nucleul WordPress. Dar până atunci, cred că poți simula acest lucru. Una dintre ultimele acțiuni care au loc atunci când un utilizator se înregistrează cu succes este crearea unei opțiuni de utilizator numită 'default_password_nag'. Putem crea o acțiune care să monitorizeze această opțiune și să configureze utilizatorul atunci când este setată.

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

function my_auto_login( $metaid, $userid, $key, $value ) {
    // Ne interesează doar evenimentul legat de 'default_password_nag'. Ignorăm orice altceva.
    if ( 'default_password_nag' !== $key  && true !== $value) {
        return;
    }

    // Setăm variabilele pentru utilizatorul curent și îi oferim un cookie de autentificare. 
    wp_set_current_user( $userid );
    wp_set_auth_cookie( $userid );
}

Netestat, dar în teorie ar trebui să funcționeze.

Acum că avem o idee despre ce să facem, trebuie să menționez că cred că aceasta este o idee proastă din punct de vedere al securității. Oamenii pot crea conturi false fără să treacă prin dificultatea de a configura o căsuță de email falsă. :)

25 feb. 2011 00:06:09
Comentarii

user_register este un loc destul de bun pentru a conecta acest lucru, cred?

jsims281 jsims281
2 sept. 2011 13:28:20
1

Tocmai am reușit să fac această funcționalitate să funcționeze folosind hook-ul user_register și următorul cod în fișierul meu functions.php:

// autentifică automat un utilizator care tocmai s-a înregistrat       
function auto_login_new_user( $user_id ) {
  wp_set_auth_cookie( $user_id, false, is_ssl() );
}
add_action( 'user_register', 'auto_login_new_user' );
2 sept. 2011 13:15:41
Comentarii

Ar trebui să trimită încă un e-mail pentru a confirma înregistrarea? Nu mai primesc acest e-mail.

codecowboy codecowboy
27 sept. 2011 11:37:16
1
function autentificare_dupa_inregistrare($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);
}
27 mai 2013 00:52:49
Comentarii

Te rog să oferi explicații împreună cu codul tău.

s_ha_dum s_ha_dum
27 mai 2013 01:47:59