Nejdříve si napíšeme nejjednodušší možnou metodu pro zjištění uživatele a povolení jeho přístupu. Tuto metodu deklarujeme jako privátní a uvedeme ji v řadiči aplikace app/controllers/application.rb
.
class ApplicationController < ActionController::Base … private def authenticate authenticate_or_request_with_http_basic do |username, password| username == 'admin' && password == 'heslo' end end end
Pokud máme uživatelů více a nechceme volit složitější řešení. Tedy pokud nám na penvo zakódované účty a hesla vyhovují, můžeme telo metody napsat nepříklad takto.
authenticate_or_request_with_http_basic do |username, password| ( username == 'admin' && password == 'heslo' ) || ( username == 'ja' && password == 'mojeheslo ) || … end
V konfiguraci Apache, pokud jej používáme jako WWW server je třeba upravit jedno přepisovací pravidlo.
RewriteRule ^(.*)$ dispatch.fcgi [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L]
Autentikační fukci pak voláme z řadiče aplikace či z konkrétních řadičů. V následujícím příkladu se kontrola uživatele vztahuje na všechna volání řadiče ProduktyController
s výjimkou volání nabidka
.
class ProduktyController < ApplicationController before_filter :authenticate, :except => [:nabidka] …