Authlogic HTTP Basic UserSession.find возвращает nil, означает, что Declarative_authorization не может получить current_user
При использовании Authlogic HTTP Basic auth, UserSession.find возвращает nil, поскольку сеанс, по-видимому, не установлен. Как результат, Declarative_authorization, который ссылается на обычный метод current_user (как показано ниже), не может найти текущего пользователя.
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end
Можно ли создать сеанс, когда пользователь авторизуется через HTTP basic (даже если этот сеанс будет длиться только до закрытия запроса), или есть лучший способ сделать это?
2 ответа
Поигравшись с Devise, теперь кажется, что все работает, поскольку при использовании ActiveResource я делаю site = "http://user:password@domain", а не:
site = "http://domain"
username = "user"
password = "password"
Который не работает. Я не нашел время, чтобы разобраться, почему.
Натыкаясь на это. У меня точно такая же проблема (с теми же самоцветами - authlogic + Declarative_auth).
Нашел решение для меня, все что мне нужно было скопировать следующий код в конец authorization_rules.rb
privileges do
privilege :manage, :includes => [:create, :read, :update, :delete]
privilege :read, :includes => [:index, :show]
privilege :create, :includes => :new
privilege :update, :includes => :edit
privilege :delete, :includes => :destroy
end