情况:
我有一个模型,并且基于用户角色,我希望允许用户仅更新模型的某些部分。假设模型具有三个字段。(我的模型显然比这更复杂)
MyObject
Field1
Field2
Field3
我的视图看起来像这样:
Html.TextBoxFor(@Model.Field1)
Html.TextBoxFor(@Model.Field2)
@if(UserIsAdmin())
Html.TextBoxFor(@Model.Field3)
else
@Model.Field3
忍受我的语法(以及示例的糟糕设计),您可以看到我正在尝试做的事情。在用户发布表单后,我的控制器将获取 MyObject 并将其保存回数据库,我们使用的是 EF。
问题:
我的问题是,有没有办法阻止用户伪造 POST 以保存他/她不应该保存的数据。我目前的想法是在控制器中进行检查,看看用户是否修改了他不应该拥有的值。或者我可以单独保存字段,但这也不是一个方便的解决方案。
有更好的吗?
谢谢!
附加信息:
不确定这篇文章是否相关:http: //blog.stevensanderson.com/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/
所有三个字段都来自同一个数据库表,我使用 EF 来获取和保存实体。