将加密的剃刀密码字段发送到mvc4控制器

时间:2013-11-15 11:49:47

标签: javascript jquery asp.net-mvc-4 razor password-encryption

我在mvc4视图中有一个剃刀字段@ 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" />
   }

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

1 个答案:

答案 0 :(得分:1)

不加密客户端,在服务器上加密。如果您希望密码在通过网络发送时加密,请通过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>

然后使用System.Web.Security.Membership类创建用户。

Membership.CreateUser(userName, password);

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