使用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进行身份验证时,是否可以创建会话(即使该会话只会持续到请求关闭),还是有更好的方法可以执行此操作?
答案 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"
哪个不起作用。我没有花时间去研究原因。