0

当使用 Authlogic 的 HTTP 基本身份验证时,UserSession.find 返回 nil,因为会话似乎没有设置。结果,引用了通常的 current_user 方法(如下所示)的 declarative_authorization 找不到当前用户。

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 进行身份验证时是否可以创建会话(即使该会话只会持续到请求关闭),还是有更好的方法来做到这一点?

4

2 回答 2

0

撞这个。我完全有同样的问题(使用相同的宝石 - 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
于 2010-10-14T17:36:04.943 回答
0

摆弄了设计,现在一切似乎都在工作,只要在使用 ActiveResource 时我做 site = "http://user:password@domain",而不是:

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

这是行不通的。我还没有花时间去探究原因。

于 2010-10-15T11:14:59.580 回答