post #4852
Restringir Requisições a Custom REST API do WordPress Apenas para Usuários Autenticados (Senha de Aplicação WP)
Publicado em: 07/04/2024 / Atualizado em: 07/04/2024
O WordPress possui um recurso chamado “Senha de Aplicação”, que possibilita que você restrinja acesso a API interna dele, para apenas aplicações autenticadas, como mostra abaixo:

Para isso, acesse a página do usuário que deseja criar uma senha de aplicação, e la em baixo, crie uma dando um nome apenas. O WordPress vai criar a senha para você.
Depois disso, basta criar o seu endpoit customizado no WordPress, como por exemplo:
function endpoit_customizado_teste() {
register_rest_route('api-interna/v1', '/ola_mundo/', array(
'methods' => 'POST',
'callback' => 'minha_funcao_teste',
'permission_callback' => function () {
return current_user_can('edit_posts'); // Apenas usuarios com permissão de editar post pode realizar requisições para esta URL
}
));
}
add_action('rest_api_init', 'endpoit_customizado_teste');
function minha_funcao_teste($request) {
return $request->get_param('mensagem'); // Ola mundo
}Para fazer uma requisição para este código, segue exemplos abaixo:
<?php
$url = "https://SEUSITE.com.br/wp-json/api-interna/v1/ola_mundo";
$username = "seuUsuario"; // Substitua pelo seu nome de usuário do WordPress
$applicationPassword = "suaSenhaDeAplicacao"; // Substitua pela senha da aplicação do WordPress
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// Codifica o nome de usuário e a senha em Base64
$credenciais = base64_encode("$username:$applicationPassword");
$headers = array(
"Authorization: Basic $credenciais",
"Content-Type: application/x-www-form-urlencoded",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
// Dados que você quer enviar
$data = http_build_query([
'mensagem' => 'Olá mundo'
]);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);
?>
Publicações recomendadas:
Link Direto
Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link direto abaixo. Basta copiar.
bruno.art.br/?p=4852
ID de Referência: 4852
Sugira uma publicação
Envie uma mensagem e sugira um publicação sobre um assunto que tenha dificuldades de resolver.