post
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:
Inscreva-se em Nossa News:
Seja notificando sempre que tiver conteúdo novo disponível no meu canal do Youtube ou artigo no meu Blog.
Link Curto para Compartilhamento
Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link curto abaixo. Basta clicar em cima do link para copiar.
bruno.art.br/pb/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.