C# 实现多步骤数据验证.NETWebMVC4应用程序的最佳实践

C# 实现多步骤数据验证.NETWebMVC4应用程序的最佳实践,c#,.net,asp.net-mvc-4,C#,.net,Asp.net Mvc 4,在.NETWebMVC4应用程序中实现多步骤数据验证的最佳实践是什么? 第一步 在控制器中,我使用RegExp检查电子邮件的有效性,并重定向到步骤2 步骤2 <input type="hidden" name="email"/> <input type="password" name="pwd"/> <input type="password" name="confirmpwd"/> 在控制器中,我检查密码的有效性并创建一个用户 如果有人更改输入中的

在.NETWebMVC4应用程序中实现多步骤数据验证的最佳实践是什么? 第一步


在控制器中,我使用RegExp检查电子邮件的有效性,并重定向到步骤2

步骤2

<input type="hidden" name="email"/>
<input type="password" name="pwd"/>
<input type="password" name="confirmpwd"/>

在控制器中,我检查密码的有效性并创建一个用户

如果有人更改输入中的电子邮件,则可以使用无效电子邮件注册帐户。 这样我就可以在会话中保存电子邮件了? 或者我应该用双向加密电子邮件并将其作为隐藏内容传递给表单? 重新验证电子邮件?在大量数据的情况下呢?
哪一种是最佳实践?

严格地说,从最佳实践的角度来看,您不能依赖使用输入,其中包括隐藏的表单字段。您可以在会话中存储电子邮件,但是如果服务器崩溃或服务器位于服务器场上,这会产生影响吗?我建议将电子邮件存储在事务数据库中,以便以后检索


就验证而言,如果您对密码强度有最低要求,则应在电子邮件的视图模型上使用regex数据注释。您还可以使用数据注释验证确认密码是否与密码匹配。最后检查控制器上的Model.IsValid以获得最佳结果

为什么要分两步?离题,但很重要。如果您验证一些数据(给定示例中的电子邮件)并将其放入隐藏字段,则在使用之前,您仍然需要在第二步对其进行验证,因为客户端可以简单地更改隐藏的输入字段。为了避免这种情况,您可以将提交和验证的数据放在会话中以保持持久性。有些情况需要多步骤验证。(包含数百个字段的长表单,例如保险公司的门户网站表单)@whiteproud-问题的细节决定了解决方案。例如,如果用户正在填写一个包含多个页面的长表单,您可能希望保存他们的进度,以便即使他们注销并重新登录,他们也可以继续离开的地方。在这种情况下,您可能会使用数据库而不是隐藏变量或会话。请发布您的真实用例。在我的真实用例中,在步骤1中,用户可以插入个人代码。如果my DB中存在此个人代码,则他可以使用此个人代码作为新帐户的参考,在步骤2中继续注册。
<input type="hidden" name="email"/>
<input type="password" name="pwd"/>
<input type="password" name="confirmpwd"/>