【发布时间】:2020-10-19 09:04:28
【问题描述】:
我读到人们可以从浏览器或其他东西中删除 javascript,并且客户端的验证停止工作,这对我们进行服务器端验证很重要..
在 .NET Core 中,我们有数据注释,这对服务器端和客户端都有效还是我们需要在服务器端进行验证?
另外,使用[Remote] 验证,是一样的吗?我正在使用这两种方法,但我不确定是否还需要对 create() 操作进行验证..
还有一件事,ModelState.IsValid() 是否适用于远程验证?感谢您的帮助
例子:
public IActionResult VerifyCargo(string Descricao, int ID_Cargo)
{
var validateName = ValidateName(Descricao);
if (validateName != null)
{
return Json($"Description {Descricao} is already in use.");
}
else
{
return Json(true);
}
}
public RH_Cargos ValidateName(string Descricao)
{
return _context.RH_Cargos.FirstOrDefault(x => x.Descricao == Descricao);
}
我有这些功能,并且在模型中我有一个 [remote] 注释,它调用第一个...
它工作正常,但我需要对Create 操作进行任何验证吗?或者这个remote 属性是否适用于服务器/客户端?安全吗?
【问题讨论】:
-
他们倾向于在服务器端工作。 (IE ModelState.IsValid) 客户端只是Jquery validate的一个实现
-
这意味着我不需要在服务器端进行任何验证,例如,我没有使数据库中的字段唯一...并且我进行了远程验证,如果我返回 true 或 javascript 错误存在该记录,我不需要在创建操作中进行更多验证,对吗?
-
如果您想要验证而不是使用 XML 格式而不是 json,您可以在其中针对模式进行验证。
-
我已经完成了所有的验证...而且一切正常,我真的不想在他们身上浪费更多的时间,我只是想知道是否可以安全地将其保留为他们是,或者如果我需要做任何服务器端实现......(我将更新一个简短示例的问题)
标签: c# asp.net-core-mvc data-annotations