2017-02-01 15 views
2

私はログインフォームを持っており、WordpressへのログインにはREST APIサービスを使用しています。私はフォームを使ってwordpressにログインすることができます。しかし、一部のユーザーにとって、wp_set_auth_cookie()関数は機能しません。私は502の不正なゲートウェイを取得しています。誰かがこれを整理するために私を助けることができますか?一部のユーザのみwp_set_auth_cookie()が動作しない

これは私のログインエンドポイント機能

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(); 
} 

答えて

0

あなたのコードにコードの下に追加して、wp_set_auth_cookieの作業を確認するか、ではありません。

$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

私はこれを自分で解決しました。定義されていない可変エラーがapiの応答とともにありました。これらのエラーはwp_set_auth_cookie()関数と競合していました。私のコードからこれらのエラーを修正すると、502の悪いゲートウェイの問題が解決されます。

関連する問題