47.23.3. HTTP Basic authentication

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]
    …
Licence Creative Commons
Tento dokument Ruby, jehož autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .