【发布时间】:2012-02-28 23:52:06
【问题描述】:
我花了很多时间,试图用剃刀般的表达来理解为什么
@HTML.PasswordFor( m => m.Password)
我无法从模型中设置值,这是我发现它通过像这样的 html 属性注入值的唯一解决方案
@HTML.PasswordFor( m => m.Password, new { value = Model.Password })
我做错了什么吗?是正确的帮手??这是现场模型配置
[Required(ErrorMessage = "La contraseña es obligatoria.")]
[StringLength(100, ErrorMessage = "El {0} debe tener al menos {2} caracteres de longitud.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Contraseña")]
public string Password { get; set; }
这是唯一的解决方案?
【问题讨论】:
-
此行为是设计使然。不要在 HTTP 请求中向下游发送密码
-
考虑到您刚刚通过同一条线路收到密码的情况,这没有任何意义。任何想要拦截密码的人都已经拥有它,因此不允许通过网络将其发送回没有任何好处,并且会给用户带来不便。糟糕的设计选择恕我直言。
-
提供您实施 SSL(您应该是)的线路是安全的。 另一方面,浏览器并不安全。因此,不要将密码放入标记中是非常有意义的。任何人都不应该知道您的密码,即使是管理员也不应该知道(他们应该立即被散列)。您可以想象,最近所有的密码泄露事件都会告诉人们,不认真对待这种事情是个坏主意。
标签: c# asp.net-mvc asp.net-mvc-3 razor