Rails Wicked Form:阻止其他人更改对象值
Rails Wicked Form: Stop others changing object values
当创建像 here 这样的带有部分验证的对象时,Wicked 需要 url -
中的对象 ID
http://localhost:3000/pets/1/steps/identity
这是否意味着任何人都可以输入此路由并修改数据?
我需要任何人(未登录)填写表格,但我不希望第三方可以访问另一个用户对象。
我只需要创建一个简单的多步骤表单,如 here,它允许标准的后退和前进按钮功能。
感谢您的帮助!
要解决这个问题,您需要进行某种授权检查。邪恶的形式 gem 不处理这些东西。
尝试CanCanCan。它非常可靠,代码也很干净。自述文件很容易理解,并向您展示了如何为每个控制器操作添加一个检查,只允许您选择编辑的人。
在您的情况下,您需要在 Ability
class 中包含以下内容:
can [:new, :create], Pet
can [:edit, :update], Pet, user: user
显示任何人都可以制作新宠物,但只有当宠物是您的宠物时,您才能加载并提交编辑表单。
当创建像 here 这样的带有部分验证的对象时,Wicked 需要 url -
中的对象 IDhttp://localhost:3000/pets/1/steps/identity
这是否意味着任何人都可以输入此路由并修改数据?
我需要任何人(未登录)填写表格,但我不希望第三方可以访问另一个用户对象。
我只需要创建一个简单的多步骤表单,如 here,它允许标准的后退和前进按钮功能。
感谢您的帮助!
要解决这个问题,您需要进行某种授权检查。邪恶的形式 gem 不处理这些东西。
尝试CanCanCan。它非常可靠,代码也很干净。自述文件很容易理解,并向您展示了如何为每个控制器操作添加一个检查,只允许您选择编辑的人。
在您的情况下,您需要在 Ability
class 中包含以下内容:
can [:new, :create], Pet
can [:edit, :update], Pet, user: user
显示任何人都可以制作新宠物,但只有当宠物是您的宠物时,您才能加载并提交编辑表单。