【问题标题】:Rails Declarative Authentication failsRails 声明式身份验证失败
【发布时间】:2011-09-17 15:04:02
【问题描述】:

我们在 CREATE 和 UPDATE 的声明式身份验证中遇到错误。我们不确定为什么,因为在错误中它显示没有用户通过身份验证并且会话以某种方式丢失:

`Authorization::NotAuthorized in CartypesController#update

没有为#(角色 [:guest]、特权 [:update]、上下文 :cartypes)找到匹配的更新规则。 `

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

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

我们是 Rails 新手,第一次尝试,其他显示和列表工作正常..(GET 操作)

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

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

【问题讨论】:

  • 您能否将评论中的信息添加到问题本身?您能否添加以下信息:您添加的 gem(用于声明式身份验证?),对路由文件的更改。

标签: ruby-on-rails declarative-authorization


【解决方案1】:

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

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

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

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

【讨论】:

  • 是的,如果您使用表单标签但有时人们不使用它。
猜你喜欢
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 2012-07-03
相关资源
最近更新 更多