Authlogic HTTP Basic UserSession.find возвращает nil, означает, что Declarative_authorization не может получить current_user - PullRequest
0 голосов
/ 26 сентября 2010

При использовании 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 ]

0 голосов
/ 15 октября 2010

Поигравшись с Devise, теперь все, кажется, работает, если при использовании ActiveResource я делаю site = "http://user:password@domain", вместо:

site = "http://domain"
username = "user"
password = "password"

Что не работает. Я не нашел время, чтобы разобраться, почему.

0 голосов
/ 14 октября 2010

натыкаясь на это. У меня точно такая же проблема (с теми же самоцветами - 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
...