Это, строго говоря, из моего личного опыта. Я перепробовал все предложенные жемчужины аутентификации и авторизации, упомянутые выше, но я всегда приходил к выводу, что не так просто работать самостоятельно, особенно когда ваши требования очень просты. Учтите это:
class ApplicationController < ActionController::Base
before_filter :authentication
def authentication
redirect_to '/authentication_form' unless session[:logged_in]
end
def authentication_form
... render the form
end
def login
if params[:username] == 'adam' && params[:password] == 'eva'
session[:logged_in] = true
redirect_to '/restricted_area'
else
render :action => 'authentication_form'
end
end
end
class RestrictedController < ApplicationController
def index
... this action is now restricted
end
end
Конечно, это не завершено, но демонстрирует, как легко может быть аутентификация с помощью рельсов. Вместо проверки пользователей и паролей с помощью кода контроллера, вы можете запросить базу данных следующим образом:
if User.find_by_name_and_password(params[:username], params[:password])
session[:logged_in] = true
...
Для авторизации вам необходимо сохранить идентификацию пользователей в хеше сеанса, что позволяет ограничивать доступ изнутри каждого действия (при условии, что контроллер является производным от ApplicationController)
Надеюсь, это поможет.