Asp.Net MVC密码

olq*_*olq 10 passwords asp.net-mvc

我使用mvc形式为用户提供更改数据库中数据的可能性.一切都很好,除了密码.从数据库控制器获取密码值时,将其传递到视图中,但视图未显示.

<div class="editor-field">
            <%: Html.PasswordFor(model => model.Password) %>
            <%: Html.ValidationMessageFor(model => model.Password) %>
</div>
Run Code Online (Sandbox Code Playgroud)

我可以保存密码,但它从未在视图中显示.无论如何,如果我将PasswordFor更改为TextBoxFor它工作正常,但我可以看到密码:(

在应用程序内部,我给用户配置其他功能的可能性,您可以配置您的外部电子邮件帐户.当呈现带有表单的视图时,带有密码的框为空.如果我提交表单然后,数据库将保存空密码 - 我不想在密码列中保存null,如果用户不想更改密码,它应该与之前相同,我也需要避免向用户显示.

小智 9

我遇到了同样的问题,问题由以下解决方案解决,可能会对你有所帮助

你的模特课

public class yourmodel

{

   [DataType(DataType.Password)]

  public string Password {get;set; }

}
Run Code Online (Sandbox Code Playgroud)

查看页面

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


Eri*_*sch 6

这就是它应该如何工作.密码字段永远不应显示数据.

如果您正确使用密码,您甚至无法显示密码.您应该对数据执行单向加密(称为哈希)并仅在数据库中存储哈希值.这样它永远不会被解密.当用户登录时,您只需对输入的密码进行哈希处理,并将其与存储的密码进行比较.


小智 5

好吧,这是一个老事,但因为我只需要对电子邮件设置做同样的事情。简单的解决方案,添加 htmlAttributes 像这样:

<div class="editor-field">
        <%: Html.PasswordFor(model => model.Password) %>
        <%: Html.ValidationMessageFor(model => model.Password, new { value=model.Password }) %>
</div>
Run Code Online (Sandbox Code Playgroud)

这将设置密码输入中的密码值。

这家伙要求的是答案,而不是批评者。这不是“正确输入密码”与否的问题,他试图完成的任务需要保存一个明确的密码,以便可以将其发送到电子邮件服务器或其他发送散列值会失败的系统。


Dav*_*ras 1

怎么了?通常您从不显示密码。您存储一个新的,如果忘记了,您会发送一个链接来创建一个新的,但在任何情况下,您都不会以明文形式显示旧的,也不带点...