Autenticação básica com Rails
Info
Disclaimer: Essa é uma forma de autenticar usuários bastante limitada. Eu não uso esse método para projetos grandes e nem recomendo.
Motivação
Bom, o Rails é um framework com muito já pronto, MVC, banco de dados, … unindo isso ao Heroku, que, para quem não sabe, é uma hospedagem extremamente fácil de usar, temos um desenvolvimento bem próximo do instantâneo.
Se você for programar somente para si, adicionar autenticação num projeto simples, pode se tornar bastante chato, isso inclue: criar model, fazer um método de autenticação (ou usar uma gem), criar um usuário (ou adicionar no db/seed.rb), …
Tendo isso em mente eu passei a usar autenticação básica http.
Usando \m/
Muito fácil, apenas abra o app/controllers/application_controller.rb e deixe-o parecido com isso:
class ApplicationController < ActionController::Base
before_filter :authenticate
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
def authenticate
return if Rails.env.test?
authenticate_or_request_with_http_basic do |username, password|
username == 'myusername' && password == 'awesomepassword'
end
end
end
Pronto, autenticação feita… No heroku ainda eu costumo usar variável de ambiente para essa autenticação.
A única diferença seria na linha 12:
username == ENV["USERNAME"] && password == ENV["PASSWORD"]
Fora isso, claro, tem que configurar essas variáveis no heroku:
$ heroku config:set USERNAME="myusername" PASSWORD="awesomepassword"