{"id":27650,"date":"2021-05-21T11:57:00","date_gmt":"2021-05-21T08:57:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27650"},"modified":"2021-10-18T04:10:42","modified_gmt":"2021-10-18T01:10:42","slug":"sistema-de-registro-de-usuario-e-login-no-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/sistema-de-registro-de-usuario-e-login-no-laravel\/","title":{"rendered":"Sistema de Registro de Usu\u00e1rio e Login no Laravel"},"content":{"rendered":"<p>O Laravel fornece sistema de login e registro de usu\u00e1rio embutido. A maioria dos desenvolvedores n\u00e3o conhece esse sistema embutido (eu tamb\u00e9m fui um deles). Quando soube desse recurso, fiquei surpreso. Ele economiza muito tempo com a cria\u00e7\u00e3o de um sistema de login e registro do zero.<\/p>\n<p>Neste artigo, estudamos o sistema de registro e login do usu\u00e1rio no Laravel &#8211; o recurso integrado fornecido pelo pr\u00f3prio Laravel.<\/p>\n<p>Como todos sabemos, o processo de login e registro tem o fluxo abaixo que geralmente precisa ser integrado.<\/p>\n<ul>\n<li>O usu\u00e1rio cria uma conta<\/li>\n<li>O link de confirma\u00e7\u00e3o ser\u00e1 enviado no endere\u00e7o de e-mail do usu\u00e1rio<\/li>\n<li>Assim que o usu\u00e1rio clicar no link de confirma\u00e7\u00e3o, eles ser\u00e3o ativados em seu sistema.<\/li>\n<li>O usu\u00e1rio faz login no seu site e pode acessar as p\u00e1ginas<\/li>\n<\/ul>\n<p>Todas as etapas acima s\u00e3o abordadas no Laravel. Voc\u00ea n\u00e3o precisa escrever um c\u00f3digo para construir este sistema de cria\u00e7\u00e3o de usu\u00e1rio.<\/p>\n<p>Dito isso, vamos dar uma olhada no sistema de registro e login do usu\u00e1rio no Laravel<\/p>\n<h3>Come\u00e7ando<\/h3>\n<p>Para come\u00e7ar, voc\u00ea deve estar pronto com o projeto Laravel. Se voc\u00ea n\u00e3o tiver, crie-o executando o comando:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel laravel-dev<\/code><\/pre>\n<p>Aqui, &#8216;laravel-dev&#8217; \u00e9 o nome do projeto Laravel. O usu\u00e1rio pode alterar este nome.<\/p>\n<p>Em seguida, voc\u00ea deve integrar a autentica\u00e7\u00e3o do Laravel. V\u00e1 at\u00e9 o diret\u00f3rio raiz do projeto no terminal e execute os comandos abaixo um por um:<\/p>\n<pre><code>composer require laravel\/ui --dev\nphp artisan ui vue --auth\nnpm install &amp;&amp; npm run dev\n<\/code><\/pre>\n<p>Estes comandos ir\u00e1 criar controladores de autentica\u00e7\u00e3o como <code>LoginController.php<\/code>, <code>RegisterController.php<\/code>, etc, que voc\u00ea vai encontrar no <code>app\/Http\/Controllers\/Auth<\/code>diret\u00f3rio. Ele tamb\u00e9m cria visualiza\u00e7\u00f5es <code>login.blade.php<\/code>, <code>register.blade.php<\/code>no <code>resources\/view\/auth<\/code>diret\u00f3rio.<\/p>\n<p>Os comandos acima tamb\u00e9m criam um <code>app.blade.php<\/code>arquivo no <code>resources\/views\/layouts<\/code>diret\u00f3rio. Esta visualiza\u00e7\u00e3o \u00e9 um layout b\u00e1sico para o aplicativo. Ele usa a estrutura CSS do Bootstrap, mas o usu\u00e1rio pode personaliz\u00e1-la e alterar o design.<\/p>\n<p>Execute o comando de migra\u00e7\u00e3o que criar\u00e1 uma tabela de &#8216;usu\u00e1rios&#8217; em seu banco de dados.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Agora, se voc\u00ea executar o projeto Laravel no navegador, ver\u00e1 os links para login e formul\u00e1rio de registro.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20530-608200a2d1ee4.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20530-608200a2d1ee4.png\" alt=\"Sistema de Registro de Usu\u00e1rio e Login no Laravel\" ><\/a><\/p>\n<p>Nesta fase, os usu\u00e1rios podem criar sua conta e fazer login no site. Mas como mencionei acima, antes que um usu\u00e1rio possa acessar o sistema, ele deve ter confirmado sua conta.<\/p>\n<p>Na pr\u00f3xima etapa, veremos como realizar o processo de verifica\u00e7\u00e3o de e-mail de um usu\u00e1rio.<\/p>\n<h3>verifica\u00e7\u00e3o de e-mail<\/h3>\n<p>Ao construir um sistema de registro, quando o usu\u00e1rio se inscreve, voc\u00ea envia um link de ativa\u00e7\u00e3o aos usu\u00e1rios. Este link de ativa\u00e7\u00e3o ser\u00e1 usado para verificar a conta do usu\u00e1rio. Uma vez, o usu\u00e1rio clica em um link de ativa\u00e7\u00e3o, ent\u00e3o o tornamos ativo. Em outras palavras, ap\u00f3s verificar se o usu\u00e1rio da conta pode navegar pelas p\u00e1ginas de seu aplicativo.<\/p>\n<p>O Laravel fornece um sistema embutido de processo de verifica\u00e7\u00e3o de e-mail para um usu\u00e1rio rec\u00e9m-registrado. Usando este sistema, um usu\u00e1rio registrado receber\u00e1 um e-mail com um link de ativa\u00e7\u00e3o. Ao ativar a conta, o usu\u00e1rio poder\u00e1 acessar o sistema.<\/p>\n<p>Abra o <code>AppUser.php<\/code>arquivo e certifique-se de que o modelo &#8216;Usu\u00e1rio&#8217; implementa o <code>IlluminateContractsAuthMustVerifyEmail<\/code>contrato.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace App;\n\u00a0\nuse IlluminateContractsAuthMustVerifyEmail;\nuse IlluminateFoundationAuthUser as Authenticatable;\nuse IlluminateNotificationsNotifiable;\n\u00a0\nclass User extends Authenticatable implements MustVerifyEmail\n{\n\u00a0\u00a0\u00a0\u00a0...\n\u00a0\u00a0\u00a0\u00a0...\n}<\/code><\/pre>\n<p>Como funciona? Se voc\u00ea verificar o arquivo de migra\u00e7\u00e3o, a tabela &#8216;usu\u00e1rios&#8217; cont\u00e9m uma <code>email_verified_at<\/code>coluna. Esta coluna ser\u00e1 usada para verificar se o usu\u00e1rio ativou sua conta ou n\u00e3o. Se a conta estiver ativada, esta coluna deve conter a data e hora da ativa\u00e7\u00e3o.<\/p>\n<p>Quando voc\u00ea executa o comando de autentica\u00e7\u00e3o, ele cria uma <code>AuthVerificationController<\/code>classe que possui uma l\u00f3gica escrita para enviar links de verifica\u00e7\u00e3o e verificar emails. O desenvolvedor pode verificar este arquivo. Para registrar as rotas necess\u00e1rias para este controlador, escreva as rotas abaixo no <code>routes\/web.php<\/code>arquivo.<\/p>\n<pre><code>Auth::routes(['verify' =&gt; true]);<\/code><\/pre>\n<p>O usu\u00e1rio pode proteger suas rotas, que devem estar por tr\u00e1s do login. Para proteger as rotas, voc\u00ea precisa se inscrever <code>middleware('verified')<\/code>nessas rotas. Depois disso, essas rotas protegidas podem ser acessadas apenas por contas verificadas.<\/p>\n<p>Voc\u00ea pode escrever o c\u00f3digo para proteger a rota da seguinte maneira:<\/p>\n<pre><code>Route::get('profile', function() {\n\u00a0\u00a0\u00a0\u00a0return '&lt;h1&gt;This is profile page&lt;\/h1&gt;';\n})-&gt;middleware('verified');<\/code><\/pre>\n<p>Se voc\u00ea deseja ter controle de para onde redirecionar o usu\u00e1rio ap\u00f3s a verifica\u00e7\u00e3o, abra o <code>AuthVerificationController<\/code>arquivo. O arquivo possui a vari\u00e1vel <code>$redirectTo<\/code>que ser\u00e1 usada para redirecionamento. Altere esta rota de acordo com sua necessidade.<\/p>\n<pre><code>protected $redirectTo = '\/home';<\/code><\/pre>\n<h3>Login e registro do usu\u00e1rio<\/h3>\n<p>Agora voc\u00ea est\u00e1 pronto para testar o sistema de login e registro do usu\u00e1rio. Como estamos lidando com o processo de inscri\u00e7\u00e3o, seu sistema dever\u00e1 ser capaz de enviar um e-mail. Voc\u00ea pode usar o servidor SMTP do Gmail para enviar e-mails. Para mais detalhes, leia nosso artigo <a href=\"https:\/\/themewp.inform.click\/pt-pt\/enviando-e-mail-via-servidor-smtp-do-gmail-no-laravel\/\" title=\"Enviando e-mail via servidor SMTP do Gmail no Laravel\" >Enviando e-mail via servidor SMTP do Gmail no Laravel<\/a>.<\/p>\n<p>Inicie o servidor de desenvolvimento local usando o comando:<\/p>\n<pre><code>php artisan serve<\/code><\/pre>\n<p>Crie uma conta de usu\u00e1rio na p\u00e1gina de registro aqui &#8211; <a href=\"http:\/\/localhost:8000\/register\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http: \/\/ localhost: 8000 \/ register<\/a><\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20530-608200a2d1ee4.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20530-608200a2d1ee4.png\" alt=\"Sistema de Registro de Usu\u00e1rio e Login no Laravel\" ><\/a><\/p>\n<p>Ap\u00f3s o envio de um formul\u00e1rio, voc\u00ea receber\u00e1 o link de verifica\u00e7\u00e3o em seu e-mail da seguinte forma:<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20530-608200a2d1ee4.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20530-608200a2d1ee4.png\" alt=\"Sistema de Registro de Usu\u00e1rio e Login no Laravel\" ><\/a><\/p>\n<p>Observe que o Laravel permite que voc\u00ea fa\u00e7a login na sua conta mesmo que ainda n\u00e3o tenha verificado a conta. Mas voc\u00ea n\u00e3o pode acessar a rota protegida.<\/p>\n<p>Eu adicionei middleware para a rota <code>profile<\/code>. Sem verificar a conta, se voc\u00ea tentar visitar a p\u00e1gina <a href=\"http:\/\/localhost:8000\/profile\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http: \/\/ localhost: 8000 \/ profile<\/a>, ele ser\u00e1 redirecionado para a URL <a href=\"http:\/\/localhost:8000\/email\/verify\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http: \/\/ localhost: 8000 \/ email \/ verify<\/a>.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20530-608200a2d1ee4.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20530-608200a2d1ee4.png\" alt=\"Sistema de Registro de Usu\u00e1rio e Login no Laravel\" ><\/a><\/p>\n<p>V\u00e1 em frente e verifique sua conta. Verifique a tabela &#8216;usu\u00e1rios&#8217; no banco de dados e voc\u00ea ver\u00e1 a <code>email_verified_at<\/code>coluna preenchida com a data e hora da ativa\u00e7\u00e3o. Isso significa que voc\u00ea verificou sua conta com sucesso. Agora voc\u00ea deve conseguir acessar as rotas protegidas.<\/p>\n<p>Espero que voc\u00ea entenda como usar o sistema de registro e login de usu\u00e1rio no Laravel. Por favor, compartilhe suas id\u00e9ias e sugest\u00f5es no coment\u00e1rio abaixo.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/authorize-net-payment-gateway-integration-no-laravel\/\" title=\"Authorize.Net Payment Gateway Integration no Laravel\">Authorize.Net Payment Gateway Integration no Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-criar-um-blog-com-o-laravel\/\" title=\"Como criar um blog com o Laravel\">Como criar um blog com o Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-criar-honeypot-para-combate-com-formulario-de-spam-no-laravel\/\" title=\"Como Criar Honeypot para Combate com Formul\u00e1rio de Spam no Laravel\">Como Criar Honeypot para Combate com Formul\u00e1rio de Spam no Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo, estudamos sobre o cadastro de usu\u00e1rios e sistema de login no Laravel. O Laravel fornece este sistema na instala\u00e7\u00e3o. N\u00f3s s\u00f3 precisamos estender isso<\/p>\n","protected":false},"author":1,"featured_media":22293,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[502],"tags":[848],"class_list":["post-27650","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27650","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=27650"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27650\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/22293"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=27650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=27650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=27650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}