如果我设置我的应用程序以使用表单身份验证,并在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加密用户输入的密码吗?如果是这样,你怎么做?
感谢。
答案 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成员资格提供程序示例和数据库表开始并从那里分支出来。