我有一个插件添加了一个名为 server 的模型,该模型包含一个 user_id 字段。我希望只有 server 的所有者才能执行 POST 请求(或者也许应该是 PUT?——该操作会在其服务器上对 Discourse 实例执行命令行重建;我不确定哪种才是最佳实践)。
在 config/routes.rb 中是这样写的:
post “/upgrade/:id” => “servers#queue_upgrade”, constraints: PfaffmanagerConstraint.new
建议在 pfaffmanager_constraint.rb 中的 matches? 方法检查 path_parameters[:action] 并在此处强制执行权限,还是在 servers_controller.rb 中执行?
另外,我认为我真正应该做的是将此路由移到 namespace :user 下,所以也许在我弄清楚这一点后,这个问题会随之解决。但目前这个方案几乎可行,我希望尽快让其他人尝试这段代码。
Rails 路由如下:
https://github.com/pfaffman/discourse-pfaffmanager/blob/master/config/routes.rb#L12
我的控制器尝试强制执行权限:
但是我的测试用例中,当另一个用户执行 post 请求时却返回了 200 状态码:
我想我需要以某种方式让 Ember 也关注这个问题?