J'essaie de tester l'emprunt d'un nonce à ma session de navigateur afin de pouvoir l'utiliser ailleurs, notamment dans mon environnement de développement npm.
J'ai pris un nonce passé dans une session de navigateur ouverte Chrome navigateur, je l'ai placée dans un en-tête de demande get pour "X-WP-Nonce" dans Postman et j'ai récupéré "Cookie nonce is invalid":
J'ai également essayé d'entrer la valeur nonce sans entourer ""
Quelqu'un sait-il pourquoi cette demande échoue?
Ajouté
Je ne pense pas que cela devrait être important, mais juste au cas où, voici le rappel pour le /auth
gestionnaire d'itinéraire:
public function authCallback(\WP_REST_Request $request) : void {
$this->isAdminOrRejectionResponse();
wp_send_json([
'success' => "You have access to wp_get_current_user()"
]);
}
protected function isAdminOrRejectionResponse() {
if (current_user_can('administrator') === false) {
wp_send_json(['error' => 'You do not have Administrator credentials.']);
}
}
Pour les applications distantes (cURL, Postman, etc.), ou lorsque vous n'utilisez pas le navigateur, vous devez utiliser un plug-in d'authentification comme Mots de passe d'application au lieu d'envoyer les cookies.
Mais si vous préférez envoyer les cookies, copiez et envoyez le WordPress cookie connecté nommé wordpress_logged_in_<hash>
. Exemple en cURL:
curl -H "X-WP-Nonce: <nonce>" -X POST https://example.com/wp-json/wp/v2/posts -d "Data here" -b wordpress_logged_in_<hash>=<cookie value>
Notez que WordPress enregistre les données de connexion de l'utilisateur (nom d'utilisateur et données hachées) dans un cookie nommé wordpress_logged_in_<hash>
(mais vous pouvez le modifier en utilisant LOGGED_IN_COOKIE
constant).
De plus, dans l'exemple ci-dessus (cURL), j'ai utilisé le X-WP-Nonce
en-tête pour envoyer le cookie nonce.
MISE À JOUR: Ajout d'une capture d'écran pour (localiser et copier) le cookie dans Chrome: