Autenticação básica com Rails

Usando autenticação http básica com Rails

#dev, #ruby

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), …

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"

Referências