{"id":5893,"date":"2026-04-11T09:05:13","date_gmt":"2026-04-11T12:05:13","guid":{"rendered":"https:\/\/thiagorossi.com.br\/blog\/?p=5893"},"modified":"2026-04-12T11:59:27","modified_gmt":"2026-04-12T14:59:27","slug":"autenticacao-e-autorizacao-no-cakephp","status":"publish","type":"post","link":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/","title":{"rendered":"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 5<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>\n<p class=\"has-medium-font-size wp-block-paragraph\">Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP: Seja bem-vindo a um dos momentos mais cr\u00edticos e recompensadores da constru\u00e7\u00e3o de qualquer aplica\u00e7\u00e3o web. Se voc\u00ea acompanhou nossa jornada at\u00e9 aqui, j\u00e1 sabe como manipular dados, organizar o front-end e interceptar requisi\u00e7\u00f5es com Middlewares. Mas agora, precisamos responder \u00e0 pergunta fundamental: <strong>&#8220;Quem \u00e9 voc\u00ea e o que voc\u00ea pode fazer aqui dentro?&#8221;<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Como especialista em <strong>CakePHP<\/strong>, preparei este d\u00e9cimo oitavo artigo para desbravar o ecossistema de seguran\u00e7a do framework. Vamos aprender a implementar um sistema de <strong>Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o<\/strong> utilizando as ferramentas modernas do CakePHP (o plugin <code>Authentication<\/code>), garantindo que seu blog ou seu sistema de vagas <strong>RPJobs<\/strong> seja uma fortaleza impenetr\u00e1vel.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o: Criando um sistema de login seguro no CakePHP<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP: No desenvolvimento de software, \u00e9 comum confundirmos esses dois conceitos, mas eles s\u00e3o os dois pilares que sustentam a seguran\u00e7a da informa\u00e7\u00e3o:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Autentica\u00e7\u00e3o (Authentication):<\/strong> \u00c9 o processo de verificar a identidade. (Ex: &#8220;Eu sou o Thiago e aqui est\u00e1 minha senha para provar&#8221;).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Autoriza\u00e7\u00e3o (Authorization):<\/strong> \u00c9 o processo de verificar permiss\u00f5es. (Ex: &#8220;O Thiago est\u00e1 logado, mas ele tem permiss\u00e3o para deletar este artigo?&#8221;).<\/li>\n<\/ol>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">O CakePHP abandonou o antigo <code>AuthComponent<\/code> em favor de plugins mais robustos e desacoplados. Hoje, trabalhamos com uma arquitetura baseada em <strong>Middleware<\/strong>, o que torna o sistema muito mais flex\u00edvel e f\u00e1cil de testar.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">1. Instalando e Configurando o Plugin de Autentica\u00e7\u00e3o<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Para come\u00e7ar, precisamos do plugin oficial. No seu terminal, dentro da pasta do projeto, execute:<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Bash<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>composer require cakephp\/authentication\n<\/code><\/pre>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Este plugin n\u00e3o funciona como um &#8220;passe de m\u00e1gica&#8221;; ele precisa ser carregado na sua aplica\u00e7\u00e3o. O local correto para isso \u00e9 o arquivo <code>src\/Application.php<\/code>.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Onde a m\u00e1gica acontece: Application.php<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Voc\u00ea precisar\u00e1 implementar a <code>AuthenticationServiceProviderInterface<\/code> e configurar o Middleware de autentica\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>\/\/ Em src\/Application.php\npublic function getAuthenticationService(ServerRequestInterface $request): AuthenticationServiceInterface\n{\n    $service = new AuthenticationService();\n\n    \/\/ Define onde o usu\u00e1rio ser\u00e1 redirecionado se n\u00e3o estiver logado\n    $service-&gt;setConfig(&#91;\n        'unauthenticatedRedirect' =&gt; Router::url(&#91;'controller' =&gt; 'Usuarios', 'action' =&gt; 'login']),\n        'queryParam' =&gt; 'redirect',\n    ]);\n\n    \/\/ Carrega os identificadores (como verificamos as credenciais)\n    $service-&gt;loadIdentifier('Authentication.Password', &#91;\n        'fields' =&gt; &#91;\n            'username' =&gt; 'email',\n            'password' =&gt; 'password',\n        ]\n    ]);\n\n    \/\/ Carrega os autenticadores (onde buscamos os dados: Sess\u00e3o e Formul\u00e1rio)\n    $service-&gt;loadAuthenticator('Authentication.Session');\n    $service-&gt;loadAuthenticator('Authentication.Form', &#91;\n        'fields' =&gt; &#91;\n            'username' =&gt; 'email',\n            'password' =&gt; 'password',\n        ],\n        'loginUrl' =&gt; Router::url(&#91;'controller' =&gt; 'Usuarios', 'action' =&gt; 'login']),\n    ]);\n\n    return $service;\n}\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">2. Preparando a Model: O Hash de Senha<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Seguran\u00e7a b\u00e1sica: <strong>nunca salve senhas em texto puro<\/strong>. O CakePHP facilita o hashing autom\u00e1tico atrav\u00e9s das <strong>Entities<\/strong>. Na sua classe <code>src\/Model\/Entity\/Usuario.php<\/code>, adicione o m\u00e9todo mutador:<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>use Authentication\\PasswordHasher\\DefaultPasswordHasher;\n\nprotected function _setPassword(string $password): ?string\n{\n    if (strlen($password) &gt; 0) {\n        return (new DefaultPasswordHasher())-&gt;hash($password);\n    }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Agora, sempre que voc\u00ea salvar um usu\u00e1rio, o CakePHP transformar\u00e1 &#8220;minha_senha_123&#8221; em um hash irreconhec\u00edvel antes de tocar no banco de dados.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">3. O Controller de Usu\u00e1rios: Login e Logout<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Com o servi\u00e7o configurado, precisamos da interface de login. No seu <code>UsuariosController.php<\/code>, a l\u00f3gica de login torna-se extremamente limpa, pois o Middleware faz o trabalho pesado.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>public function beforeFilter(\\Cake\\Event\\EventInterface $event)\n{\n    parent::beforeFilter($event);\n    \/\/ Permite que as a\u00e7\u00f5es de login e add sejam acessadas sem estar logado\n    $this-&gt;Authentication-&gt;addUnauthenticatedActions(&#91;'login', 'add']);\n}\n\npublic function login()\n{\n    $result = $this-&gt;Authentication-&gt;getResult();\n    \/\/ Se o usu\u00e1rio j\u00e1 est\u00e1 logado, envia para a home\n    if ($result-&gt;isValid()) {\n        $target = $this-&gt;Authentication-&gt;getLoginRedirect() ?? &#91;'controller' =&gt; 'Artigos', 'action' =&gt; 'index'];\n        return $this-&gt;redirect($target);\n    }\n    \n    \/\/ Se o usu\u00e1rio submeteu o formul\u00e1rio e falhou\n    if ($this-&gt;request-&gt;is('post') &amp;&amp; !$result-&gt;isValid()) {\n        $this-&gt;Flash-&gt;error('E-mail ou senha inv\u00e1lidos');\n    }\n}\n\npublic function logout()\n{\n    $this-&gt;Authentication-&gt;logout();\n    return $this-&gt;redirect(&#91;'controller' =&gt; 'Usuarios', 'action' =&gt; 'login']);\n}\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">4. Autoriza\u00e7\u00e3o: O Pr\u00f3ximo N\u00edvel (Policy)<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Estar logado \u00e9 apenas metade da batalha. O CakePHP utiliza o conceito de <strong>Policies<\/strong> (Pol\u00edticas) para a autoriza\u00e7\u00e3o. Uma Policy \u00e9 uma classe que decide se um usu\u00e1rio pode realizar uma a\u00e7\u00e3o em um recurso espec\u00edfico.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Se voc\u00ea quer verificar se um usu\u00e1rio pode editar um artigo, voc\u00ea cria um <code>ArtigoPolicy.php<\/code>.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Exemplo de Policy (<code>src\/Policy\/ArtigoPolicy.php<\/code>)<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>namespace App\\Policy;\n\nuse App\\Model\\Entity\\Artigo;\nuse Authorization\\IdentityInterface;\n\nclass ArtigoPolicy\n{\n    public function canEdit(IdentityInterface $user, Artigo $artigo)\n    {\n        \/\/ Apenas o dono do artigo ou um Admin pode editar\n        return $user-&gt;id === $artigo-&gt;usuario_id || $user-&gt;role === 'admin';\n    }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">No Controller, voc\u00ea simplesmente chama: <code>$this-&gt;Authorization-&gt;authorize($artigo, 'edit');<\/code>. Se a regra falhar, o CakePHP lan\u00e7a uma exce\u00e7\u00e3o de &#8220;Acesso Proibido&#8221; automaticamente.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">5. Prote\u00e7\u00e3o de Rotas e Seguran\u00e7a de Dados<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Ao implementar <strong>Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o<\/strong>, seu sistema ganha camadas de prote\u00e7\u00e3o contra diversos ataques:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Brute Force:<\/strong> Voc\u00ea pode integrar o plugin com limitadores de tentativa.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Session Hijacking:<\/strong> O Middleware de sess\u00e3o do CakePHP regenera IDs e usa cookies seguros<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Mass Assignment:<\/strong> Combinado com a prote\u00e7\u00e3o de campos acess\u00edveis na Entity (Artigo 9), voc\u00ea garante que um usu\u00e1rio comum n\u00e3o consiga se &#8220;autopromover&#8221; a Admin enviando um campo extra no formul\u00e1rio.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">6. Boas Pr\u00e1ticas para um Sistema Seguro<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Para que o seu blog ou qualquer outra solu\u00e7\u00e3o web que voc\u00ea esteja criando seja refer\u00eancia em seguran\u00e7a, siga estas diretrizes:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>HTTPS em tudo:<\/strong> De nada adianta um sistema de login robusto se os dados viajam em texto puro pela rede. Force o uso de SSL via Middleware.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Mantenha as Policies simples:<\/strong> Elas devem responder &#8220;Sim&#8221; ou &#8220;N\u00e3o&#8221; rapidamente. Se a regra for complexa demais, talvez precise ser uma regra de neg\u00f3cio na Model.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Use o Helper de Identidade:<\/strong> Na sua View, use o <code>IdentityHelper<\/code> para mostrar o nome do usu\u00e1rio logado ou esconder bot\u00f5es de &#8220;Editar&#8221; para quem n\u00e3o tem permiss\u00e3o:<code>if ($this-&gt;Identity-&gt;get('role') === 'admin') { ... }<\/code><\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Log de Acessos:<\/strong> Sempre registre tentativas de login malsucedidas. Isso ajuda a identificar padr\u00f5es de ataque.<\/li>\n<\/ol>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">Conclus\u00e3o: A Paz de Esp\u00edrito de um C\u00f3digo Seguro<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Implementar um sistema de <strong>Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o<\/strong> no CakePHP pode parecer trabalhoso no in\u00edcio devido \u00e0 sua arquitetura de plugins e Middlewares, mas o resultado \u00e9 um c\u00f3digo limpo, modular e, acima de tudo, seguro. Voc\u00ea n\u00e3o est\u00e1 apenas colocando uma &#8220;tranca na porta&#8221;; voc\u00ea est\u00e1 construindo um sistema de monitoramento completo.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Com o usu\u00e1rio devidamente identificado e suas permiss\u00f5es controladas, sua aplica\u00e7\u00e3o est\u00e1 pronta para o mundo real. O controle total sobre quem acessa o qu\u00ea d\u00e1 a voc\u00ea, desenvolvedor, a tranquilidade necess\u00e1ria para focar no que realmente importa: as funcionalidades do seu neg\u00f3cio.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Mas antes de dominar o CakePHP, se for o seu caso, toda jornada tem um in\u00edcio. Vamos entender quais s\u00e3o os conhecimentos b\u00e1sicos necess\u00e1rios para aproveitar ao m\u00e1ximo este poderoso framework. Para iniciar seus estudos no CakePHP, voc\u00ea precisar\u00e1 dominar as seguintes tecnologias:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/html\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp\" alt=\"HTML\" class=\"wp-image-600\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">HTML<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/css\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux.webp\" alt=\"CSS\" class=\"wp-image-702\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">CSS<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/javascript\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript.webp\" alt=\"Javascript\" class=\"wp-image-804\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">JavaScript<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/sql\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp\" alt=\"SQL\" class=\"wp-image-942\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">SQL<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/php\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png\" alt=\"Capa Curso PHP\" class=\"wp-image-2835\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP-300x169.png 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">PHP<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">E se voc\u00ea gosta do nosso conte\u00fado, n\u00e3o deixe de contribuir adquirindo os servi\u00e7os e produtos dos nossos apoiadores e empresas que somos associados.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/hostinger.com.br\/?REFERRALCODE=1THIAGO62\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/03\/hostinger.png\" alt=\"Hospedagem Hostinger\" class=\"wp-image-92\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNDYlc\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/ofertas-amazon.webp\" alt=\"Ofertas Amazon\" class=\"wp-image-1308\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNKmt0\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/amazonprime.webp\" alt=\"Amazon Prime\" class=\"wp-image-1307\"\/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Dica de Especialista:<\/strong> N\u00e3o tente reinventar a roda criando sua pr\u00f3pria l\u00f3gica de sess\u00e3o ou hash de senha. O ecossistema do CakePHP \u00e9 auditado e segue os padr\u00f5es mais r\u00edgidos de seguran\u00e7a da comunidade PHP. Use os plugins oficiais e mantenha-os sempre atualizados via Composer!<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 5<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP: Seja bem-vindo a um dos momentos mais cr\u00edticos e recompensadores&#8230;<\/p>\n","protected":false},"author":1,"featured_media":5819,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[97],"tags":[],"class_list":["post-5893","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cakephp","wpcat-97-id"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP - BLOG THIAGO ROSSI<\/title>\n<meta name=\"description\" content=\"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP: No desenvolvimento de software, \u00e9 comum confundirmos esses dois conceitos, mas eles s\u00e3o os dois ...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP - BLOG THIAGO ROSSI\" \/>\n<meta property=\"og:description\" content=\"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP: No desenvolvimento de software, \u00e9 comum confundirmos esses dois conceitos, mas eles s\u00e3o os dois ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/\" \/>\n<meta property=\"og:site_name\" content=\"BLOG THIAGO ROSSI\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-11T12:05:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-12T14:59:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png\" \/>\n\t<meta property=\"og:image:width\" content=\"758\" \/>\n\t<meta property=\"og:image:height\" content=\"426\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Thiago Rossi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thiago Rossi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/autenticacao-e-autorizacao-no-cakephp\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/autenticacao-e-autorizacao-no-cakephp\\\/\"},\"author\":{\"name\":\"Thiago Rossi\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\"},\"headline\":\"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP\",\"datePublished\":\"2026-04-11T12:05:13+00:00\",\"dateModified\":\"2026-04-12T14:59:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/autenticacao-e-autorizacao-no-cakephp\\\/\"},\"wordCount\":968,\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/autenticacao-e-autorizacao-no-cakephp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/capa-cakephp.png\",\"articleSection\":[\"CakePHP\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/autenticacao-e-autorizacao-no-cakephp\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/autenticacao-e-autorizacao-no-cakephp\\\/\",\"name\":\"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP - BLOG THIAGO ROSSI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/autenticacao-e-autorizacao-no-cakephp\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/autenticacao-e-autorizacao-no-cakephp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/capa-cakephp.png\",\"datePublished\":\"2026-04-11T12:05:13+00:00\",\"dateModified\":\"2026-04-12T14:59:27+00:00\",\"description\":\"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP: No desenvolvimento de software, \u00e9 comum confundirmos esses dois conceitos, mas eles s\u00e3o os dois ...\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/autenticacao-e-autorizacao-no-cakephp\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/autenticacao-e-autorizacao-no-cakephp\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/autenticacao-e-autorizacao-no-cakephp\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/capa-cakephp.png\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/capa-cakephp.png\",\"width\":758,\"height\":426,\"caption\":\"CakePHP\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/autenticacao-e-autorizacao-no-cakephp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"name\":\"THIAGO ROSSI\",\"description\":\"Mais de 20 anos de experi\u00eancia no mercado de TI!\",\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"alternateName\":\"TR | CURSO WEB DEV\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\",\"name\":\"THIAGO ROSSI\",\"alternateName\":\"TR | CURSO WEB DEV\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"width\":300,\"height\":300,\"caption\":\"THIAGO ROSSI\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\",\"name\":\"Thiago Rossi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"caption\":\"Thiago Rossi\"},\"description\":\"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \\\"GDD \u2013 O Guia Definitivo\\\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.\",\"sameAs\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\",\"https:\\\/\\\/instagram.com\\\/thiagorossix86\",\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"],\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/author\\\/thiagorossi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP - BLOG THIAGO ROSSI","description":"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP: No desenvolvimento de software, \u00e9 comum confundirmos esses dois conceitos, mas eles s\u00e3o os dois ...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/","og_locale":"pt_BR","og_type":"article","og_title":"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP - BLOG THIAGO ROSSI","og_description":"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP: No desenvolvimento de software, \u00e9 comum confundirmos esses dois conceitos, mas eles s\u00e3o os dois ...","og_url":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/","og_site_name":"BLOG THIAGO ROSSI","article_published_time":"2026-04-11T12:05:13+00:00","article_modified_time":"2026-04-12T14:59:27+00:00","og_image":[{"width":758,"height":426,"url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","type":"image\/png"}],"author":"Thiago Rossi","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Thiago Rossi","Est. tempo de leitura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/#article","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/"},"author":{"name":"Thiago Rossi","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87"},"headline":"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP","datePublished":"2026-04-11T12:05:13+00:00","dateModified":"2026-04-12T14:59:27+00:00","mainEntityOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/"},"wordCount":968,"publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","articleSection":["CakePHP"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/","url":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/","name":"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP - BLOG THIAGO ROSSI","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/#primaryimage"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","datePublished":"2026-04-11T12:05:13+00:00","dateModified":"2026-04-12T14:59:27+00:00","description":"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP: No desenvolvimento de software, \u00e9 comum confundirmos esses dois conceitos, mas eles s\u00e3o os dois ...","breadcrumb":{"@id":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/#primaryimage","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","width":758,"height":426,"caption":"CakePHP"},{"@type":"BreadcrumbList","@id":"https:\/\/thiagorossi.com.br\/blog\/autenticacao-e-autorizacao-no-cakephp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thiagorossi.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Autentica\u00e7\u00e3o e Autoriza\u00e7\u00e3o no CakePHP"}]},{"@type":"WebSite","@id":"https:\/\/thiagorossi.com.br\/blog\/#website","url":"https:\/\/thiagorossi.com.br\/blog\/","name":"THIAGO ROSSI","description":"Mais de 20 anos de experi\u00eancia no mercado de TI!","publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"alternateName":"TR | CURSO WEB DEV","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thiagorossi.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/thiagorossi.com.br\/blog\/#organization","name":"THIAGO ROSSI","alternateName":"TR | CURSO WEB DEV","url":"https:\/\/thiagorossi.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","width":300,"height":300,"caption":"THIAGO ROSSI"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/linkedin.com\/in\/thiagox86"]},{"@type":"Person","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87","name":"Thiago Rossi","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","caption":"Thiago Rossi"},"description":"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \"GDD \u2013 O Guia Definitivo\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.","sameAs":["https:\/\/thiagorossi.com.br\/blog","https:\/\/instagram.com\/thiagorossix86","https:\/\/linkedin.com\/in\/thiagox86"],"url":"https:\/\/thiagorossi.com.br\/blog\/author\/thiagorossi\/"}]}},"_links":{"self":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/5893","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/comments?post=5893"}],"version-history":[{"count":4,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/5893\/revisions"}],"predecessor-version":[{"id":5901,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/5893\/revisions\/5901"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media\/5819"}],"wp:attachment":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media?parent=5893"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/categories?post=5893"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/tags?post=5893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}