Authlogic HTTP Basic UserSession.find返回nil,表示declarative_authorization无法获取current_user

时间:2010-09-26 16:15:21

标签: ruby-on-rails authlogic declarative-authorization http-basic-authentication

使用Authlogic的HTTP Basic身份验证时,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 :(得分:0)

撞到这个。我正好有同样的问题(使用相同的gems - 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

答案 1 :(得分:0)

摆弄Devise后,现在一切似乎都在工作,只要使用ActiveResource我做site =“http:// user:password @ domain”,而不是:

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

哪个不起作用。我没有花时间去研究原因。