Autenticação: Rails 8
O curso lê o sistema de autenticação que o bin/rails generate authentication produz no Rails 8, citando os templates e o código instalados. Ele trata do concern Authentication, do Current, do model Session guardado no banco, do SessionsController, do User.authenticate_by e da DSL rate_limit de controller. Depois lê o sistema feito à mão deste app: Identity::User, Identity::Current, Auth::SessionsController e Auth::AuthenticateUserService, com proteção por tempo e bloqueio de conta. Uma comparação mostra o que cada sistema tem e não tem. No fim, há um pequeno desafio em Ruby baseado na lógica de bloqueio.
O que você vai aprender
- ✓Os arquivos, rotas e migrations que o gerador de autenticação do Rails 8 cria
- ✓Como o concern Authentication, o Current e uma linha Session registram cada login
- ✓Como funcionam o User.authenticate_by e o rate_limit, lidos no código instalado do Rails
- ✓A diferença entre uma sessão no cookie criptografado padrão do Rails e uma sessão no banco
- ✓Proteção por tempo com um digest fixo criado no boot e bloqueio de conta após falhas repetidas
- ✓As trocas entre a base do gerador e um sistema feito à mão
bin/rails generate authentication: o gerador do Rails 8
O bin/rails generate authentication vem dentro do railties-8.1.3.1, a versão do Rails que este app usa, e o arquivo USAGE dele diz o que ele faz:
Ler a aula completa grátis →Currículo
7 aulasbin/rails generate authentication: o gerador do Rails 8
O que o bin/rails generate authentication cria: models, controllers, um concern, mailers, rotas, migrations e o bcrypt.
O concern gerado, o Current e uma sessão no banco
Como o concern gerado protege toda ação por padrão, e como o Current e uma linha Session registram logins.
SessionsController, User.authenticate_by e rate_limit
O SessionsController gerado e o código instalado do User.authenticate_by e da DSL rate_limit apoiada no cache.
O sistema deste app: Identity::User, Identity::Current, Auth::SessionsController
O sistema próprio deste app, que guarda session[:user_id] no cookie criptografado padrão do Rails, sem model Session.
Auth::AuthenticateUserService: segurança além da base do gerador
Como o Auth::AuthenticateUserService usa um digest fixo do boot contra enumeração por tempo e acrescenta bloqueio de conta.
A troca: o que cada sistema tem, e o que não tem
Uma comparação entre gerador e app em sessões revogáveis, limite de login, proteção por tempo e bloqueio de conta.
Juntando tudo: dois sistemas, quatro trocas
Uma revisão dos dois sistemas e das quatro trocas, fechando com um desafio em Ruby sobre a lógica de bloqueio.