我已经创建了一个WCF服务来处理ASP.NET成员资格。 它使用清除类型密码运行正常, 但是当我将密码类型更改为哈希时, 验证用户时,我的服务总是返回false,
哦,我有另一个winforms应用程序,它使用相同的数据库作为其成员资格提供程序,并且使用清除或哈希密码运行良好
当我从两个应用程序调用重置密码(使用散列密码)时,它们会以不同的长度值更改数据库中的数据。 WCF 44个字符,而WinForms应用程序只有28个字符。
所以我对发生的事情感到困惑,并想知道我做错了什么
答案 0 :(得分:1)
你不能在中途改变它。决定该计划,然后建立用户。
答案 1 :(得分:1)
如果您已在数据库中存储密码,则无法更改密码类型。已存储的密码未经过哈希处理,验证用户功能将始终返回false。
要在一个数据库上使用多个应用程序,您必须确保所有应用程序都使用相同的散列方式。
答案 2 :(得分:1)
我已经解决了这个问题。
感谢http://www.codeproject.com/KB/aspnet/LoginControlError.aspx
我似乎需要在app.config中将HashAlgorithmType显式设置为“SHA1”
这里要提到的另一件事是我使用mysql作为我的后端数据库。 所以使用MS SQL Server可能不会发生这种情况。