Rails声明性身份验证失败

时间:2011-09-17 15:04:03

标签: ruby-on-rails declarative-authorization

我们在CREATE和UPDATE上发生声明式身份验证时出错。我们不确定为什么,因为在错误中它显示没有用户进行身份验证,并且某种程度上会话丢失:

`CartizationsController#update中的Authorization :: NotAuthorized

没有为#(roles [:guest],privileges [:update],context:cartypes)的更新找到匹配规则。 `

“backoffice”角色拥有authentication_controller.rb中的权限:has_permission_on :cartypes, :to => [:index, :show, :new, :create, :edit, :update, :destroy, :delete]

在stackoverflow中存在类似的问题:Link to Stackoverflow Question

我们是Rails的新手并且已经第一次尝试了,其他节目和列表工作正常..(GET操作)

任何帮助表示赞赏...... thx。

  编辑:我们能够解决这个问题,因为我们发现在讨论模型安全性时,“声明性授权”的文档并不是那么清晰!如果您仔细阅读,在使用模型安全性时,需要设置:## Heading ## Authorization.current_user到请求的用户(在application_controller.rb中)。对于rails-n00bs,它可能不那么清楚......

1 个答案:

答案 0 :(得分:0)

您是否在请求中包含authenticity_token参数?默认情况下,Rails强制执行PUT,POST和DELETE需要具有此令牌以防止跨站点请求伪造。

如果您不包含它,Rails将自动重置会话以防止CSRF攻击。

看看Understanding the Rails Authenticity Token。费萨尔解释得非常好。

http://guides.rubyonrails.org/security.html