ASP.Net MVC3 Html.PasswordFor没有填充

kol*_*uri 48 razor asp.net-mvc-3

在我看来,我有以下元素

  @Html.PasswordFor(model => model.Password)
Run Code Online (Sandbox Code Playgroud)

这是在创建/更新用户详细信息的屏幕上.当我尝试更新用户时,此字段保持空白.当我将此元素更改为TextBoxFor时,它获取数据.如何填写"密码"字段.

mat*_*mat 141

如上所述,出于安全原因,最好避免这样做.如果您仍希望保留密码以便从当前验证失败的地方继续,则可以使用带有html属性参数的HTML帮助程序:

     Html.PasswordFor(x => x.Password, new { value = Model.Password})
Run Code Online (Sandbox Code Playgroud)

  • 这个答案实际上是在回答这个问题! (15认同)
  • 它*告诉*这个问题的大多数赞成者都会回答这个问题,这会给应用程序带来安全漏洞.我敦促你们每个人留意:你真的需要显示密码吗?您的安全性有哪些缺陷要求您以任何方式显示密码?您是否相信能够重现密码并将其显示给您的应用程序?我真的希望不是,但也许这就是为什么身份盗窃是一个如此大的问题.当你处理密码时,你正在用字面的方式处理人们的生活. (3认同)

cwh*_*ris 39

这是设计的.密码未填写以防止意外重新提交,并防止页面包含未加密的密码.如果您要回发凭据,显然密码错误.

在您的情况下,您可以创建一个输入数据的扩展,或者只使用类型为password的HTML输入.


bka*_*aid 5

MVC保护您不会因此而做这样的事情.您实际上不应该这样做,因为用户密码不应以未加密和未加密的方式存储.如果您的目标是最终在http://plaintextoffenders.com/上结束,您可以执行以下操作:

<input type="password" name="Password" id="Password" value="@Model.Password" />
Run Code Online (Sandbox Code Playgroud)