gpt4 book ai didi

c# - 用户在View中修改model的隐藏值(@Html.HiddenFor)

转载 作者:太空宇宙 更新时间:2023-11-03 19:02:03 24 4
gpt4 key购买 nike

我使用此 View 编辑现有对象:

@using (Html.BeginForm("EditPat","bff"))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.HiddenFor(m => m.IdNumPart)
...more code

其实IdNumPart字段对于普通用户是不可见的,但是如果他们使用Chrome DevTools他们可以修改隐藏的值:

<input data-val="true" data-val-number="The field IdNumPart must be a number." data-val-required="The IdNumPart field is required." id="IdNumPart" name="IdNumPart" type="hidden" value="13">

当他们提交时,这将影响我的 Controller 中的逻辑,他们可以修改任何更改 IdNumPart

的记录
[HttpPost]
public ActionResult EditPat(inspListaNoParte model)
{
try
{
var oldModel = bff.inspListaNoPartes.Find(model.IdNumPart);
bff.Entry(oldModel).State = EntityState.Modified;
oldModel.UMC = model.UMC;
bff.SaveChanges();
TempData["AlertMessage"] = "Success";
}
catch (Exception ex)
{
TempData["ErrorMessage"] = "Error";
throw;
}
return View();
}

所以,我正在寻找一种方法来保护我免受这些问题的影响。

最佳答案

您可以使用属性来禁止某些用户访问方法

[HttpPost]
[Authorize(Roles = "Administrator,Editors")]
public ActionResult EditPat(inspListaNoParte model)
{
try
{
var oldModel = bff.inspListaNoPartes.Find(model.IdNumPart);
bff.Entry(oldModel).State = EntityState.Modified;
oldModel.UMC = model.UMC;
bff.SaveChanges();
TempData["AlertMessage"] = "Success";
}
catch (Exception ex)
{
TempData["ErrorMessage"] = "Error";
throw;
}
return View();
}

或者您可以使用方法检查用户是否在组内

if(User.IsInRole("Administrator"))

并将字段添加到您的数据库表“ModifiedBy”,这样您就可以知道谁是最后修改记录的人。

oldModel.LastModifiedBy= WebSecurity.CurrentUserId;

如果用户有权访问某些产品的编辑模式,那么只需检查该产品是否属于他

if(oldModel.OwnerId == WebSercurity.CurrentUserId)

希望对您有所帮助。

关于c# - 用户在View中修改model的隐藏值(@Html.HiddenFor),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34500302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com