我们在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,它可能不那么清楚......
答案 0 :(得分:0)
您是否在请求中包含authenticity_token
参数?默认情况下,Rails强制执行PUT,POST和DELETE需要具有此令牌以防止跨站点请求伪造。
如果您不包含它,Rails将自动重置会话以防止CSRF攻击。
看看Understanding the Rails Authenticity Token。费萨尔解释得非常好。