在web.config中为凭据指定passwordFormat时,如何处理解密?

时间:2011-02-25 18:36:33

标签: c# asp.net forms-authentication

如果我设置我的应用程序以使用表单身份验证,并在web.config中指定凭据,如下所示:

<authentication mode="Forms">
  <forms loginUrl="~/LogOn" name=".ASPXAUTH" path="/" defaultUrl="~/AuthArea" timeout="2880">
    <credentials passwordFormat="MD5">
      <user name="user" password="user123" />
    </credentials>
  </forms>
</authentication>

我如何在LogOn操作中验证凭据?

if (FormsAuthentication.Authenticate(model.UserName, model.Password)) {

我不需要使用MD5加密用户输入的密码吗?如果是这样,你怎么做?

感谢。

2 个答案:

答案 0 :(得分:2)

使用FormsAuthentication.Authenticate时,无需加密密码。您在web.config中的密码需要在MD5中加密。这是我使用的代码:

public static string EncryptToMD5(this string helper)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            return BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(helper)));
        }

答案 1 :(得分:1)

您必须编写(或修改)安全提供程序以加密密码并将其与存储的凭据进行比较。我对你的最大建议是从现有的安全提供程序开始,比如SqlServerRoleProvider(它在所有新的MVC / Web Forms项目中作为默认提供程序连接)。

详细信息可以在这里找到: http://msdn.microsoft.com/en-us/library/ff649314.aspx

仅供参考:M $提供的安全提供程序处理加密BY DEFAULT。这意味着您不必自定义编写它:-)我会说从SQL Server成员资格提供程序示例和数据库表开始并从那里分支出来。