视图验证的MVC最佳做法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视图验证的MVC最佳做法?相关的知识,希望对你有一定的参考价值。
以下示例被认为是最佳实践:
- 更改密码-正常,输入用户名,当前密码,新密码,确认密码
- 更改密码-密码恢复,电子邮件具有转到此页面的链接,发送一个参数,其中包含用户名和新系统更改的密码,视图仅显示新密码并确认密码。
- 更改密码-上面的链接包含无效的参数,表明此链接已损坏
这是3个单独的视图吗? 还是具有多个路线选项的同一视图?
ActionResult ChangePassword()
ActionResult ChangePassword(string token)
// if bad token show this error view partial? set viewdata item and let cshtml decide what to show?
还是这样的情况不是真的那么合乎逻辑吗?
答案
我将其分为2页:
更改密码
- 用户总是输入旧密码和新密码,两次输入新密码进行确认
- 无需获取用户名,因为它们应该已经通过身份验证
- 不允许URL参数预填充值
- 使用CSRF令牌
重设密码
- 仅链接到具有有效唯一参数的电子邮件
- 用户仅输入新密码,两次进行确认
- 无需获取用户名,通过电子邮件设置的URL参数已经可以识别用户
- 不要使用URL参数发送其他任何内容,例如临时密码或用户名
- 无需使用CSRF令牌,其他唯一参数已阻止伪造
这两页的操作方式似乎完全不同,我认为最好使用单独的视图,操作和视图模型。 如果最后,重构消除重复没有什么问题,但是我预计它们不会像您期望的那样相似。
另一答案
我认为您可以只使用一个View,只需要构建足够强大的ViewModel:
public class ChangePasswordViewModel()
public string OldPasswordHash get; set; //Remember never to store password in clear text
public string NewPassword get; set;
public string RecoveryToken get; set;
基于这些属性,您应该拥有充实视图中表示逻辑的所有内容,以掩盖您上面描述的所有用例。 让我知道您是否需要进一步的指导。
另一答案
我认为对ASP.NET MVC
的最佳验证是您要Validation Attributes
上的“ Validation Attributes
”。
以上是关于视图验证的MVC最佳做法?的主要内容,如果未能解决你的问题,请参考以下文章