{"id":5968,"date":"2018-10-29T09:51:25","date_gmt":"2018-10-29T12:51:25","guid":{"rendered":"https:\/\/blog.dialhost.com.br\/?p=5968"},"modified":"2019-05-07T17:37:31","modified_gmt":"2019-05-07T20:37:31","slug":"middlewares-no-laravel","status":"publish","type":"post","link":"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/","title":{"rendered":"Middlewares: adicionando seguran\u00e7a com o Laravel"},"content":{"rendered":"\n<p>Ol\u00e1 Pessoal! Estou de volta para continuar nossos estudos sobre o <strong>Laravel<\/strong>. No <a href=\"https:\/\/www.dialhost.com.br\/blog\/laravel-5-7-criando-form-validations\/\">\u00faltimo artigo<\/a> eu trouxe os form validations, para validarmos todo tipo de entrada em formul\u00e1rios para os usu\u00e1rios. Agora, vamos dar um pulo na seguran\u00e7a do projeto, configurando <strong><em>Middlewares<\/em><\/strong> para as requisi\u00e7\u00f5es que ser\u00e3o feitas.<\/p>\n\n\n\n<p>No caso utilizarei o <em>Middleware<\/em> de autentica\u00e7\u00e3o do <strong>Laravel<\/strong> para verificar se um usu\u00e1rios do sistema est\u00e1 autenticado.<\/p>\n\n\n\n<div id=\"toc_container\" class=\"have_bullets\"><p class=\"toc_title\">T&oacute;picos<\/p><ul class=\"toc_list\"><li><a href=\"#o-que-sao-os-middlewares-no-laravel\">O que s\u00e3o os Middlewares no Laravel?<\/a><\/li><li><a href=\"#middlewares-globais\">Middlewares Globais<\/a><\/li><li><a href=\"#grupos-de-middlewares\">Grupos de Middlewares<\/a><\/li><li><a href=\"#middleware-de-rotas\">Middleware de rotas<\/a><\/li><li><a href=\"#fazendo-o-migration-de-usuarios\">Fazendo o Migration de usu\u00e1rios<\/a><\/li><li><a href=\"#definindo-um-middleware-por-rota\">Definindo um Middleware por rota<\/a><\/li><li><a href=\"#concluindonbsp\">Concluindo&nbsp;<\/a><\/li><\/ul><\/div>\n<h2><span id=\"o-que-sao-os-middlewares-no-laravel\">O que s\u00e3o os Middlewares no Laravel?<\/span><\/h2>\n\n\n\n<p>O <em>Middleware<\/em> \u00e9 apenas um mecanismo de filtragem de requisi\u00e7\u00e3o HTTP. Ou seja, ele permite ou barra determinados fluxos de requisi\u00e7\u00e3o que entram na sua aplica\u00e7\u00e3o, baseado em regras definidas.<\/p>\n\n\n\n<p>Dando um exemplo pr\u00e1tico, o <em>Middleware<\/em> de autentica\u00e7\u00e3o do <strong>Laravel<\/strong> verifica se um usu\u00e1rio est\u00e1 autenticado no sistema. Caso n\u00e3o esteja, o sistema barra a requisi\u00e7\u00e3o antes mesmo de chegar ao <em>Controller<\/em>.<\/p>\n\n\n\n<p>O <em>Middleware<\/em> de autentica\u00e7\u00e3o do <strong>Laravel<\/strong> \u00e9 considerado de rota, mas, ainda existem outros 2 tipos: os <em>Middlewares<\/em> globais e os grupos de&nbsp;<em>Middlewares,<\/em> que falarei a seguir.<\/p>\n\n\n\n<h2><span id=\"middlewares-globais\">Middlewares Globais<\/span><\/h2>\n\n\n\n<p>Como o nome j\u00e1 implica, o <em>Middleware<\/em> global intermediar\u00e1 toda requisi\u00e7\u00e3o&nbsp;<strong>HTTP<\/strong>. Assim, s\u00f3 \u00e9 recomendado utilizar, caso todo o seu sistema necessite de autentica\u00e7\u00e3o para funcionar. Mas, como a nossa p\u00e1gina de <em>login<\/em>, <em>signup<\/em> e etc n\u00e3o ser\u00e3o autenticadas, n\u00e3o utilizaremos este m\u00e9todo.<\/p>\n\n\n\n<p>Agora, caso voc\u00ea precise fazer alguma regra para ser aplicada globalmente, basta adicionar <em>Middleware<\/em> criado na propriedade <code>$middleware<\/code> no arquivo <code>app\/Http\/Kernel.php<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">class Kernel extends HttpKernel { \/** * The application's global HTTP middleware stack. * * These *  middleware are run during every request to your application. * * @var  *  array  *\/  protected $middleware = [    \\App\\Http\\Middleware\\CheckForMaintenanceMode::class,   \\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize::class,   \\App\\Http\\Middleware\\TrimStrings::class,       \\Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull::class   \\App\\Http\\Middleware\\TrustProxies::class,   \\App\\Http\\Middleware\\SuaClasseMiddleware::class, ]; \u2026 <\/pre>\n\n\n\n<h2><span id=\"grupos-de-middlewares\">Grupos de Middlewares<\/span><\/h2>\n\n\n\n<p>Os grupos de <em>Middlewares<\/em> servem para voc\u00ea conseguir colocar v\u00e1rias regras de <em>Middlewares<\/em> diferentes sendo utilizadas de uma vez para toda requisi\u00e7\u00e3o dentro do grupo especificado.&nbsp;<\/p>\n\n\n\n<p>Por padr\u00e3o, toda requisi\u00e7\u00e3o de browser estar\u00e1 inclusa nas requisi\u00e7\u00f5es web, ou seja, todas as rotas que est\u00e3o no arquivo <code>web.php<\/code>, passar\u00e3o pela valida\u00e7\u00e3o do grupo web que se encontra no <code>Kernel.php<\/code>. Por este motivo, tamb\u00e9m n\u00e3o configurarei a classe <code>Authenticate<\/code> aqui.<\/p>\n\n\n\n<h2><span id=\"middleware-de-rotas\">Middleware de rotas<\/span><\/h2>\n\n\n\n<p>O <em>Middleware<\/em> de rota \u00e9 a forma mais espec\u00edfica que voc\u00ea pode criar. Ele \u00e9 aplicado no <code>Kernel.php<\/code> com um <em>label<\/em> dentro da propriedade <code>$routeMiddleware<\/code>. Neste exemplo, vou utilizar o <code>auth<\/code>&nbsp;para fazer a autentica\u00e7\u00e3o de login.<br><\/p>\n\n\n\n<h2><span id=\"fazendo-o-migration-de-usuarios\">Fazendo o Migration de usu\u00e1rios<\/span><\/h2>\n\n\n\n<p>Em nosso exemplo utilizarei este modelo. Assim, vou definir que a tela de login n\u00e3o necessitar\u00e1 do <em>Middleware<\/em>.<\/p>\n\n\n\n<p>A primeira coisa a fazer aqui, \u00e9 criar uma tabela nova de usu\u00e1rios. O <strong>Laravel<\/strong> j\u00e1 disponibiliza uma por padr\u00e3o. Neste caso, vou utiliz\u00e1-la, mas, voc\u00ea pode criar uma com os seus pr\u00f3prios padr\u00f5es.<\/p>\n\n\n\n<p>Ent\u00e3o, voltando aos <a href=\"https:\/\/blog.dialhost.com.br\/migrations-relacionando-tabelas-laravel\/\" target=\"_blank\" rel=\"noreferrer noopener\">migrations<\/a>, vou pegar os arquivos <code>create_users_table<\/code> e <code>create_password_resets_table<\/code> para criar as tabelas de login. Se tudo der certo em sua migra\u00e7\u00e3o, voc\u00ea ter\u00e1 as duas novas tabelas para implementarmos o <em>login<\/em>.<br><\/p>\n\n\n\n<h2><span id=\"definindo-um-middleware-por-rota\">Definindo um Middleware por rota<\/span><\/h2>\n\n\n\n<p>Agora, temos que criar as <em>views<\/em> e rotas para o <em>login<\/em> e cadastro. Neste ponto, o <strong>Laravel<\/strong> tamb\u00e9m j\u00e1 pensou para n\u00f3s, e, ao rodar o comando <code>php artisan make:auth<\/code>, voc\u00ea ver\u00e1 que seu projeto ganha automaticamente alguns arquivos:<\/p>\n\n\n\n<ul><li><code>app\/Http\/Controllers\/HomeController.php<\/code><\/li><li><code>resources\/Http\/Controllers\/auth\/<\/code><\/li><li><code>resources\/views\/auth<\/code><\/li><\/ul>\n\n\n\n<p>No arquivo de rotas <code>web.php<\/code> voc\u00ea ver\u00e1 uma rota espec\u00edfica de autentica\u00e7\u00e3o <code>Auth::routes();<\/code>. Essa linha j\u00e1 engloba as rotas de <strong>login, logout, reset password, forgot password e register<\/strong>.<\/p>\n\n\n\n<p>Al\u00e9m disso, ser\u00e1 registrada uma rota para <code>\/home<\/code> apontando para <code>HomeController@index<\/code>. Aqui eu vou fazer algumas modifica\u00e7\u00f5es:<\/p>\n\n\n\n<ul><li>Primeiro, vou reapontar o <code>\/home<\/code> para <code>\/<\/code>, na rota.<\/li><li>Vou trocar a defini\u00e7\u00e3o do&nbsp;<code>HomeController@index<\/code>, na rota, para a <code>ProductsController@index<\/code>.&nbsp;<\/li><li>Especificamente para este projeto vou apontar as vari\u00e1veis <code>$redirectTo<\/code>, da Controller&nbsp;<code>LoginController<\/code>, <code>RegisterController<\/code>,&nbsp;<code>ResetPasswordController<\/code> e <code>VerificationController<\/code> para<code>\/<\/code>.&nbsp;<\/li><li>No Middleware <code>RedirectIfAuthenticated<\/code> tamb\u00e9m vou fazer a altera\u00e7\u00e3o do <code>\/home<\/code> para <code>\/<\/code>.<\/li><\/ul>\n\n\n\n<p>Essas modifica\u00e7\u00f5es s\u00e3o porque eu n\u00e3o quero ter uma rota home, j\u00e1 que ela ser\u00e1 a pr\u00f3pria raiz do meu dom\u00ednio.<\/p>\n\n\n\n<p>Se voc\u00ea est\u00e1 um pouco perdido com rela\u00e7\u00e3o as rotas leia o&nbsp;<a href=\"https:\/\/blog.dialhost.com.br\/laravel-controller\/\" target=\"_blank\" rel=\"noreferrer noopener\">artigo sobre Controllers<\/a>&nbsp;que eu fiz h\u00e1 um tempo atr\u00e1s. Nele eu explico sobre o registro de rotas no <strong>Laravel<\/strong>.<\/p>\n\n\n\n<p>Agora que todos os redirecionamentos e rotas foram criados, s\u00f3 preciso adicionar o <em>Middleware auth<\/em> nas rotas. Para isso existem 2 maneiras.<\/p>\n\n\n\n<p>A primeira \u00e9 adicionando rota a rota, como mostro abaixo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Route::get('\/', 'ProductsController@index')->name('home')->middleware('auth');<\/pre>\n\n\n\n<p>A segunda \u00e9 adicionando um <code>Route::group<\/code> que conter\u00e1 o Middleware e que abra\u00e7ar\u00e1 todas as rotas que eu quero proteger com a autentica\u00e7\u00e3o. Dessa forma, nosso arquivo <code>web.php<\/code> ficar\u00e1 assim:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">'auth'], function() { Route::get('\/', 'ProductsController@index')->name('home'); Route::get('product_lines','ProductLinesController@index')->name('product_line_index'); Route::get('product_lines\/{product_line}','ProductLinesController@show')->name('product_line_show'); Route::post('product_lines\/{product_line}\/add_product','ProductLinesController@productStore')->name('product_line_product_store'); Route::get('products','ProductsController@index')->name('product_index'); Route::post('products','ProductsController@store')->name('product_store'); Route::get('products\/{product}','ProductsController@show')->name('product_show'); Route::get('products\/{product}\/edit','ProductsController@edit')->name('product_edit'); Route::patch('products\/{product}','ProductsController@update')->name('product_update'); Route::get('products\/{product}\/delete','ProductsController@delete')->name('product_delete'); });<\/pre>\n\n\n\n<p>Se voc\u00ea ainda n\u00e3o est\u00e1 acreditando que foi t\u00e3o f\u00e1cil adicionar uma valida\u00e7\u00e3o com sess\u00e3o de login utilizando <em>Middlewares<\/em> no <strong>Laravel<\/strong>, n\u00e3o se debata. Essa configura\u00e7\u00e3o abstrai toda a complexidade de fazer uma&nbsp;<em>session<\/em> <em>start<\/em>, validar usu\u00e1rio e senha, e at\u00e9 mesmo, criar uma <em>view<\/em> do zero.<\/p>\n\n\n\n<h2><span id=\"concluindonbsp\">Concluindo&nbsp;<\/span><\/h2>\n\n\n\n<p>Os <em>Middlewares<\/em> foram implementados no <strong>Laravel<\/strong>, para fazer todo o meio de campo entre o in\u00edcio da <em>Request<\/em> e a chegada na<em> Controller<\/em>. Assim, conseguimos filtrar e garantir mais seguran\u00e7a no tr\u00e1fego dos dados dentro do sistema.&nbsp;<\/p>\n\n\n\n<p>O exemplo acima, foi uma implementa\u00e7\u00e3o b\u00e1sica que acredito existir em 90% dos sistemas web hoje. O mais importante aqui \u00e9 voc\u00ea entender o conceito por traz do <em>Middleware<\/em>, e, sempre que precisar filtrar ou proteger uma requisi\u00e7\u00e3o, saber que o <em>Middleware<\/em> est\u00e1 l\u00e1 para servi-lo.<\/p>\n\n\n\n<p>Como sempre, deixo o tema que vou estudar e compartilhar com voc\u00eas. Para o pr\u00f3ximo artigo, vou trabalhar com dados na sess\u00e3o e ver como acessar os dados do meu usu\u00e1rio. At\u00e9 l\u00e1! \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo, voc\u00ea aprender\u00e1 como implementar autentica\u00e7\u00e3o e dar mais seguran\u00e7a ao seu projeto, configurando Middlewares para as requisi\u00e7\u00f5es HTTP que ser\u00e3o feitas.\t\t\t\t<\/p>\n","protected":false},"author":1,"featured_media":8598,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[17,20,23,24,12],"tags":[138],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Middlewares: adicionando seguran\u00e7a com o Laravel - Blog DialHost<\/title>\n<meta name=\"description\" content=\"Veja como implementar autentica\u00e7\u00e3o e mais seguran\u00e7a no seu projeto configurando Middlewares para as requisi\u00e7\u00f5es HTTP que ser\u00e3o feitas.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Middlewares: adicionando seguran\u00e7a com o Laravel - Blog DialHost\" \/>\n<meta property=\"og:description\" content=\"Veja como implementar autentica\u00e7\u00e3o e mais seguran\u00e7a no seu projeto configurando Middlewares para as requisi\u00e7\u00f5es HTTP que ser\u00e3o feitas.\" \/>\n<meta property=\"og:url\" content=\"\/blog\/middlewares-no-laravel\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog DialHost\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/DialHost\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/DialHost\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-29T12:51:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-05-07T20:37:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2019\/04\/og-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dialhost\" \/>\n<meta name=\"twitter:site\" content=\"@dialhost\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\",\"name\":\"DialHost Internet\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/DialHost\",\"https:\/\/www.instagram.com\/dialhost_oficial\/\",\"https:\/\/www.linkedin.com\/company\/dialhost-internet\",\"https:\/\/www.youtube.com\/channel\/UCAiqiX8IiqTSfA8wQhpzgXQ\",\"https:\/\/twitter.com\/dialhost\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#logo\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2019\/03\/marca-dialhost.png\",\"width\":81,\"height\":81,\"caption\":\"DialHost Internet\"},\"image\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#website\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/\",\"name\":\"Blog DialHost\",\"description\":\"Os melhores conte\\u00fados sobre Desenvolvimento Web, Marketing e Neg\\u00f3cios\",\"publisher\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.dialhost.com.br\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2018\/10\/middleware-laravel-1.jpg\",\"width\":1920,\"height\":1080,\"caption\":\"Laravel-middleware\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/#webpage\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/\",\"name\":\"Middlewares: adicionando seguran\\u00e7a com o Laravel - Blog DialHost\",\"isPartOf\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/#primaryimage\"},\"datePublished\":\"2018-10-29T12:51:25+00:00\",\"dateModified\":\"2019-05-07T20:37:31+00:00\",\"description\":\"Veja como implementar autentica\\u00e7\\u00e3o e mais seguran\\u00e7a no seu projeto configurando Middlewares para as requisi\\u00e7\\u00f5es HTTP que ser\\u00e3o feitas.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"\/blog\/\",\"url\":\"\/blog\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"\/blog\/middlewares-no-laravel\/\",\"url\":\"\/blog\/middlewares-no-laravel\/\",\"name\":\"Middlewares: adicionando seguran\\u00e7a com o Laravel\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#\/schema\/person\/a0b10cbe35449dea173a06d4664f9fcc\"},\"headline\":\"Middlewares: adicionando seguran\\u00e7a com o Laravel\",\"datePublished\":\"2018-10-29T12:51:25+00:00\",\"dateModified\":\"2019-05-07T20:37:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/#webpage\"},\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/#primaryimage\"},\"keywords\":\"laravel\",\"articleSection\":\"Desenvolvimento,Infraestrutura e Seguran\\u00e7a,Laravel,PHP,Tecnologias\",\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dialhost.com.br\/blog\/middlewares-no-laravel\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#\/schema\/person\/a0b10cbe35449dea173a06d4664f9fcc\",\"name\":\"DialHost Internet\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/05feec2f99aef1c42b09aeaa637ee66f?s=96&r=g\",\"caption\":\"DialHost Internet\"},\"description\":\"H\\u00e1 mais de 18 anos proporcionando um servi\\u00e7o de hospedagem de sites voltado 100% na Experi\\u00eancia e Sucesso do Cliente, prezando a qualidade, transpar\\u00eancia e seguran\\u00e7a.\",\"sameAs\":[\"https:\/\/www.facebook.com\/DialHost\",\"https:\/\/www.instagram.com\/dialhost_oficial\/\",\"https:\/\/www.linkedin.com\/company\/dialhost-internet\",\"https:\/\/twitter.com\/dialhost\",\"https:\/\/www.youtube.com\/channel\/UCAiqiX8IiqTSfA8wQhpzgXQ\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts\/5968"}],"collection":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/comments?post=5968"}],"version-history":[{"count":0,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts\/5968\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/media\/8598"}],"wp:attachment":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/media?parent=5968"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/categories?post=5968"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/tags?post=5968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}