Javascript 向mvc4控制器发送加密的razor密码字段

Javascript 向mvc4控制器发送加密的razor密码字段,javascript,jquery,asp.net-mvc-4,razor,password-encryption,Javascript,Jquery,Asp.net Mvc 4,Razor,Password Encryption,我在mvc4视图中有一个razor字段@Html.PasswordFor,还有一个按钮可以提交其他用户信息: @using (Html.BeginForm("StoreInfo", "Home", FormMethod.Post)) { // stuff @Html.PasswordFor(m => m.ViewModel.userPwd, new { id = "UserPwd" }) // stuff <input i

我在mvc4视图中有一个razor字段@Html.PasswordFor,还有一个按钮可以提交其他用户信息:

   @using (Html.BeginForm("StoreInfo", "Home", FormMethod.Post))
   {
      // stuff
      @Html.PasswordFor(m => m.ViewModel.userPwd, new { id = "UserPwd" })

      // stuff
      <input id="submitInfo" type="submit" value="@Resource.ButtonSubmit" />
   }
@使用(Html.BeginForm(“StoreInfo”,“Home”,FormMethod.Post))
{
//东西
@Html.PasswordFor(m=>m.ViewModel.userPwd,新的{id=“userPwd”})
//东西
}

我想要的是将模型中加密的密码发送到mvc4控制器。控制器负责将其存储在数据库中。另外,我希望加密方法是不可逆的,我的意思是,密码不能被解密。如何做到这一点?我认为应该在mvc4视图中使用一些javascript或jquery方法进行密码加密,对吗?

不要在客户端加密,在服务器上加密。如果您希望在通过网络发送密码时对其进行加密,请通过https发送。然后在服务器上使用单向加密算法,如SHA

一种方法是使用.NET成员资格提供程序。您可以在web.config中进行设置:

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
        connectionStringName="DbConnectionStringName"
        enablePasswordRetrieval="false" enablePasswordReset="true" 
        requiresQuestionAndAnswer="false" requiresUniqueEmail="true" 
        maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" 
        minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
        passwordCompatMode="Framework20" applicationName="MyAppName" />
  </providers>
</membership>

该方法将为您单向加密密码。

请您提供一个小示例,说明如何(使用https)进行加密?为接收该信息的控制器中的操作使用[RequireHttps]属性?谢谢你的建议。但是如果修改web.config,它会将https应用于整个网站。我只想在发送此信息时使用https作为具体的mvc4视图。也许在控制器的操作中使用[RequireHttps]属性就足够了?是的,您可以在站点上保持常规http,并且只需要在需要应用数据传输加密的操作方法上使用https。但是,您应该在返回登录表单的GET和接受用户登录数据的POST上都需要它。。。使用
[RequireHttps]
属性。此外,上面的web.config条目并没有为您的站点添加https,它只是对服务器上的密码进行加密。如果没有https,密码仍然可以在到达服务器之前以纯文本形式发送。我的mvc4视图不是登录页面,它只包含用户信息和密码这一关键字段。然后,我只想在将此文件发送到控制器时对其进行加密。
Membership.CreateUser(userName, password);