По умолчанию все контроллеры rails наследуют контроллер приложения.
В моем приложении я хочу, чтобы пользователи могли проходить проверку подлинности с любой страницы с использованием http-basic auth, а также проверять подлинность путем публикации, но только на одном контроллере..
В настоящее время все выглядит так (упрощенно):
class ApplicationController < ActionController::Base
before_filter :set_current_user
private
def set_current_user
Authorization.current_user = current_user
end
def current_user
if session[:user].blank?
authenticate_or_request_with_http_basic do |user,pass|
session[:user] = authenticated_user_or_nil
end
end
session[:user]
end
end
class UserSessionsController < ApplicationController
prepend_before_filter :set_user_from_params
private
def set_user_from_params
session[:user] = authenticated_user_or_nil
end
end
Я установил точку останова в set_user_from_params
и set_current_user
и убедился, что они действительно вызываются в правильном порядке..
set_user_from_params
на самом деле правильно устанавливает session[:user]
, но когда я продолжаю и достигаю точки останова внутри set_current_user
, хэш сессии пуст!?
Это предполагаемое поведение или имеетЯ что-то упустил действительно очевидное?