我在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视图中完成,我是对的吗?
答案 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);
该方法将为您单向加密密码。