Registrazione utente seguita da login automatico

9 feb 2011, 20:24:49
Visualizzazioni: 15.7K
Voti: 17

Sto utilizzando un plugin modificato per le mie esigenze.

Quello che voglio ottenere è che dopo la registrazione, l'utente venga automaticamente loggato e reindirizzato alla pagina corrente. Al momento il sistema invia un'email con username e password, dopodiché l'utente deve effettuare manualmente il login con queste credenziali.

4
Commenti

stai utilizzando il modulo di registrazione predefinito o uno personalizzato?

Bainternet Bainternet
9 feb 2011 20:46:50

Uno personalizzato ma si basa su reindirizzamenti, quindi i codici progettati per funzionare con il sistema predefinito potrebbero funzionare ugualmente, e in caso contrario probabilmente posso modificarlo per adattarlo.

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

Penso dovrei far notare che il login automatico di un utente durante la registrazione bypassa parte della sicurezza del login. Normalmente, un utente non può accedere senza fornire un indirizzo email valido. L'utente deve registrarsi, ricevere un'email e poi effettuare il login. Se rimuovi il passaggio dell'email, i tuoi utenti potrebbero registrarsi con indirizzi falsi, essere automaticamente autenticati e poter accedere al backend, commentare o fare qualsiasi cosa possano fare i tuoi iscritti predefiniti. Chi ne trarrebbe vantaggio? Gli spammer, per esempio. Anche gli hacker adorerebbero curiosare alla ricerca di falle nel tuo backend senza dover fornire un indirizzo che potrebbe rivelare la loro identità.

s_ha_dum s_ha_dum
27 mag 2013 02:08:59

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

Suresh Kamrushi Suresh Kamrushi
9 gen 2018 12:44:01
Tutte le risposte alla domanda 4
2
10

Fondamentalmente, per autenticare un utente puoi utilizzare:

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

ma questo vale solo quando hai la password e il login quindi puoi creare il tuo modulo di registrazione, elaborarlo e creare l'utente da solo

//Solo dopo che tutto è stato validato, procedi con la creazione dell'utente
        //Crea l'utente
        $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 );

        /*Invia e-mail all'amministratore e al nuovo utente - 
        Potresti creare la tua e-mail personalizzata invece di usare questa funzione*/
        wp_new_user_notification( $user_id, $user_pass );

e qui abbiamo sia il login che la password, quindi puoi autenticare l'utente.

Spero che questo sia d'aiuto

9 feb 2011 21:39:51
Commenti

Non esiste un filtro di registrazione a cui è possibile agganciarsi?

Zack Zack
9 feb 2011 22:30:20

Complicato, vedrò se riesco a integrarlo. Non c'è quindi un modo più semplice. Immagino che WordPress non abbia interesse a fornire una comoda funzione get_the_password() visto che la invia via email.

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

Non esiste un punto ideale dove agganciarsi al processo di registrazione. Penso ci sia un valido motivo per aggiungere un action hook per l'evento di registrazione utente nel core. Ma nel frattempo potresti simularlo. Una delle ultime cose che accadono quando un utente si registra con successo è la creazione di un'opzione utente chiamata 'default_password_nag'. Possiamo creare un'azione per monitorare questo evento e configurare l'utente quando viene impostato.

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

function my_auto_login( $metaid, $userid, $key, $value ) {
    // Ci interessa solo l'evento del password nag. Ignoriamo tutto il resto.
    if ( 'default_password_nag' !== $key  && true !== $value) {
        return;
    }

    // Imposta le variabili dell'utente corrente e gli assegna un cookie.
    wp_set_current_user( $userid );
    wp_set_auth_cookie( $userid );
}

Non testato, ma in teoria dovrebbe funzionare.

Ora che abbiamo un'idea di cosa fare, voglio esprimere la mia opinione che questa sia una cattiva idea dal punto di vista della sicurezza. Le persone potrebbero creare account fasulli senza neanche doversi preoccupare di configurare una casella email temporanea. :)

25 feb 2011 00:06:09
Commenti

user_register è un ottimo punto per agganciarsi, pensi sia adatto in questo caso?

jsims281 jsims281
2 set 2011 13:28:20
1

Ho appena implementato con successo questa funzionalità utilizzando l'hook user_register e il seguente codice nel mio file functions.php:

// effettua il login automatico per un utente appena registrato
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 set 2011 13:15:41
Commenti

Dovrebbe ancora inviare un'email per confermare la registrazione? Non la ricevo più.

codecowboy codecowboy
27 set 2011 11:37:16
1
function login_after_register($userlogin,$userpass){
    // Creiamo l'array delle credenziali per il login
    $credentials = array( 'user_login' =>  $userlogin, 'user_password' => $userpass, 'remember' => true );

    // Verifichiamo se la connessione è SSL
    $secure_cookie = is_ssl();

    // Applichiamo i filtri per il cookie di autenticazione sicura
    $secure_cookie = apply_filters('secure_signon_cookie', $secure_cookie, $credentials);
    // Aggiungiamo il filtro per l'autenticazione via cookie
    add_filter('authenticate', 'wp_authenticate_cookie', 30, 3);

    // Autentichiamo l'utente
    $user = wp_authenticate($credentials['user_login'], $credentials['user_password']);
    // Impostiamo il cookie di autenticazione
    wp_set_auth_cookie($user->ID, $credentials["remember"], $secure_cookie);
    // Eseguiamo l'azione wp_login
    do_action('wp_login', $user->user_login, $user);
}
27 mag 2013 00:52:49
Commenti

Fornisci spiegazioni insieme al tuo codice.

s_ha_dum s_ha_dum
27 mag 2013 01:47:59