This content originally appeared on DEV Community and was authored by Dominique Morem
Criando o login
Dê um:
rails g authentication
Você vai ver algo assim no seu terminal:
Depois disso, confira se a gem bcrypt está descomentada. Caso não esteja, descomente e salve a alteração. Precisaremos dela para a encriptação de senhas.
Migrando atualizando o BD com as novas tabelas geradas
Veja que ao dar o comando do generate de autenticação (para criar o login) o Rails realizou - entre outras ações - a criação de três models: current, user e session.
Logo, precisamos atualizar o nosso banco de dados para passar a ter essas respectivas tabelas.
Para isso vamos dar um...
rails db:migrate
... para efetivar essas mudanças no banco de dados.
Logando na Aplicação
Há duas formas de você logar na aplicação:
Pode ser utilizando os emails que constam pré-configurados na pasta fixtures (como mostra Typecraft em seu vídeo).
Pode ser você criando no banco de dados o seu próprio registro de usuário. Você pode criar o usuário que você quiser por lá.
1 - Logando com e-mails pré-configurados
Para acessá-los vamos em:
test > fixtures > files > users.yml
Agora vamos ajeitar as senhas (as senhas vêm por padrão como 'password') mas para poder utilizá-las é preciso dar um comando antes...
Vamos dar um:
rails db:fixtures:load
Rápida explicação sobre rails db:fixtures:load - Início
Esse comando serve para carregar os dados definidos nos arquivos de
fixtures(geralmente .yml - como o users.yml por exemplo -
dentro de test/fixtures/) para o banco de dados.Ou seja, o Rails vai ler os arquivos YAML de fixtures, por exemplo
test/fixtures/users.yml e vai inserir os dados definidos nesses
arquivos nas respectivas tabelas do banco.Rápida explicação sobre rails db:fixtures:load - Final
Selecione um dos emails presentes no arquivo users.yml
(test > fixtures > files) para colocar no campo de email do login.
E, como senha, utilize a palavra: password
Bingo! Ele vai entrar!
2 - Logando na aplicação com o seu e-mail
Para logar com o seu email ou com qualquer outro exemplo de email que te der na telha, faça o seguinte:
No terminal, dê um:
rails c
Para acessar o console do Rails.
Uma vez neste, digite:
User.new
para visualizar os nomes dos campos...
Perfeito! Desses campos o único que você vai copiar na íntegra é o email_address:.
Isso porque o id, o created_at: e o updated_at: são preenchidos automaticamente pelo Rails quando você cria o registro.
A questão do password_digest
NÃO PASSE O COMANDO DE CRIAÇÃO DO REGISTRO COM password_digest DIRETAMENTE (!!!) - Vá por mim, eu fiquei quebrando cabeça um tempão porque cometi esse erro e não sabia porque não estava dando certo!
Ao tentar criar um registo como:
User.create!(email: "teste@email.com", password_digest: "123456")
Isso não criptografará nada. Você estará gravando "123456" puro na coluna, o que significa dizer que a senha real estará exposta no banco (o que se trata de um gravíssimo risco de segurança). E, o método authenticate não vai funcionar, porque ele espera um hash BCrypt, não o texto plano. Basicamente, você quebrará o fluxo do Rails Auth.
Dê preferência por preencher o campo de senha apenas com password:
Quando você passa password: "123456" o has_secure_password intercepta o setter password= e usa a gem BCrypt para criar um hash seguro dessa senha. Com isso ele vai gravar esse hash no campo password_digest antes de salvar.
Ps: não precisa utilizar password_confirmation se não quiser validação de confirmação.
Por fim, depois dessa digressão toda, a criação do usuário no BD vai ficar estruturada assim:
User.create!(email_address: "tim.maia@hotmail.com", password: "descobridor_dos_sete_mares")
Obs: A exclamação (!) no final do create é para ele gerar uma mensagem de erro caso a inserção do registro no BD dê too much wrong.
Plim! Registro bem sucedido!
Vamos testar para ver se funcionou mesmo:
Foi, deu certo!
Saindo da aplicação - Fazendo Logout
Para deslogar da aplicação você pode inserir no seu menu principal da aplicação - ou em algum lugar da homepage - o seguinte botão (que Exequiel Rozas criou), que já vem pré-configurado:
<% if Current.user.present? %>
<%= button_to "Sign out", session_path, method: :delete, class: "inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-black underline focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" %>
<% else %>
<%= link_to "Sign in", new_session_path, class: "inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" %>
<% end %>
Vai ficar mais ou menos assim:
Digo 'mais ou menos' assim porque eu mudei o tailwind original dos botões para ficarem vermelho e verde:
<% if Current.user.present? %>
<%= button_to "Sign out", session_path, method: :delete, class: "focus:outline-none text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300 font-medium rounded-lg text-sm px-5 py-2.5 me-2 mb-2 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900" %>
<% else %>
<%= link_to "Sign in", new_session_path, class: "focus:outline-none text-white bg-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300 font-medium rounded-lg text-sm px-5 py-2.5 me-2 mb-2 dark:bg-green-600 dark:hover:bg-green-700 dark:focus:ring-green-800" %>
<% end %>
Falta agora configurar para que você só veja as suas postagens e ous outros só vejam as postagens ou publicações deles. Mas isso é tema para um outro post...
Agradecimentos:
Se pude criar este minitutorial devo isso a 3 pessoas me passaram um pouco do seu conhecimento:
- Professor Anchieta (meu professor de Programação Avançada)
- Typecraft do Canal Ruby on Rails
- E Exequiel Rozas
This content originally appeared on DEV Community and was authored by Dominique Morem

Dominique Morem | Sciencx (2025-08-12T20:31:52+00:00) Login e Logout no Rails 8 para apressadinhos. Retrieved from https://www.scien.cx/2025/08/12/login-e-logout-no-rails-8-para-apressadinhos/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.