当使用Authlogic的HTTP Basic auth时,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进行身份验证时创建一个会话(即使该会话只会持续到请求关闭),或者有没有更好的方法来做到这一点?
发布于 2010-10-15 19:15:00
在摆弄了一下设计之后,现在一切似乎都正常了,只要我在使用ActiveResource时做了site = "http://user:password@domain",而不是:
site = "http://domain"
username = "user"
password = "password"这不管用。我没有花时间去挖掘其中的原因。
发布于 2010-10-15 01:36:05
撞到这个了。我也遇到了同样的问题(使用相同的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
endhttps://stackoverflow.com/questions/3798653
复制相似问题