2017-02-01 1 views
2

Ich habe ein Login-Formular und verwenden REST API-Dienst für die Anmeldung in der Wordpress. Ich kann mich mit dem Formular in WordPress einloggen. Aber für einige Benutzer wp_set_auth_cookie() funktioniert nicht und ich bekomme 502 schlechtes Gateway. Kann mir jemand helfen, das zu klären?wp_set_auth_cookie() funktioniert nicht nur für einige Benutzer

Dies ist die Anmeldungs ​​Endpunkt Funktion

function user_authentication() { 

    global $wp_rest_auth_cookie;  
    if(strcasecmp($_SERVER['REQUEST_METHOD'], 'POST') != 0){ 
     throw new Exception('Request method must be POST!'); 
    } 
    $contentType = isset($_SERVER["CONTENT_TYPE"]) ? trim($_SERVER["CONTENT_TYPE"]) : ''; 
    if(strcasecmp($contentType, 'application/json') != 0){ 
     throw new Exception('Content type must be: application/json'); 
    } 
    $content = trim(file_get_contents("php://input")); 
    $decoded = json_decode($content, true); 
    if(!is_array($decoded)){ 
     throw new Exception('Received content contained invalid JSON!'); 
    } 
    $user_data['user_login'] = $decoded['username']; 
    $user_data['user_password'] = $decoded['password']; 
    $user_data['remember'] = false; 
    $user = wp_signon($user_data, false); 
    if (!is_wp_error($user)) {  
     wp_clear_auth_cookie(); 
     wp_set_current_user ($user->ID); 
     wp_set_auth_cookie ($user->ID); 
     $wp_rest_auth_cookie = wp_create_nonce('wp-rest') ; 
     $token = encrypt_decrypt('encrypt',$user->ID); 
     $name = get_name($user->ID); 

     $response = array(
        'status'=> 'success',        
        'token' => $token, 
        'username' => $name, 
        'uname' => $user->ID     

        ); 

     return json_encode($response); 
    }else{ 
     $response = array(
        'status' => 'fail',       
        'message'=> "The username and password you entered don't match." 
        ); 
     return json_encode($response); 
    } 


     die(); 
} 

Antwort

0

Code unten in Ihren Code hinzufügen und wp_set_auth_cookie Arbeits überprüfen oder nicht.

$user_data['user_login'] = $decoded['username']; 
$user_data['user_password'] = $decoded['password']; 
$user_data['remember'] = true; 
$user = wp_signon($user_data, false); 
if (!is_wp_error($user)) { 
    wp_set_auth_cookie($user->ID, true);  
} else { 
    echo $user->get_error_message(); 
} 
0

Ich habe das selbst gelöst. Es gab einige nicht definierte variable Fehler zusammen mit der API-Antwort. Diese Fehler standen in Konflikt mit der Funktion wp_set_auth_cookie(). Wenn ich diese Fehler von meinem Code behoben habe, wird das Problem mit 502 schlechten Gateways gelöst.

Verwandte Themen