2017-11-02 2 views
1

Ich habe eine benutzerdefinierte Route erstellt, um einen einzelnen Benutzer Metawert zu bearbeiten. Hier ist der Code:WP REST API nicht erforderlich Authentifizierung am POST

add_action('rest_api_init', function() { 
    register_rest_route('custom', '/activating/(?P<id>\d+)', array(
     'methods' => 'POST', 
     'callback' => __NAMESPACE__ . '\\activate_user', 
     'args' => array(
      'id' => array(
       'validate_callback' => function($param, $request, $key) { 
        return is_numeric($param); 
       } 
      ), 
     ), 
    )); 
}); 

function activate_user($data){ 
    $user_id = $data['id']; 
    update_user_meta($user_id, "user_active", 1, 0); 
    return array('message' => 'OK'); 
} 

Testen Sie es auf Postman, WP nicht erforderlich Authentifizierung. Das ist normal? Was muss ich tun, um eine POST-Anfrage nur mit Authentifizierung zuzulassen?

Antwort

1

Sie sollten das Argument permission_callback verwenden, um den Benutzer zu authentifizieren.

add_action('rest_api_init', function() { 
    register_rest_route('custom', '/activating/(?P<id>\d+)', array(
     'methods' => 'POST', 
     'callback' => __NAMESPACE__ . '\\activate_user', 
     'permission_callback' => 'is_user_logged_in', 
     'args' => array(
      'id' => array(
       'validate_callback' => function($param, $request, $key) { 
        return is_numeric($param); 
       } 
      ), 
     ), 
    )); 
}); 

Wie man hier sehen kann, ging ich in der is_user_logged_in Funktion, die eine basische gerade tun (bool) wahr oder falsch, wenn der Benutzer angemeldet ist oder nicht. Sie könnten es noch weiter bringen, indem Sie nach Möglichkeiten suchen und Nonces verifizieren (wenn Nonce in den Headern übergeben wird).

Source

Verwandte Themen