我知道这看起来与其他问题相似,但我不认为我的情况与他们的情况相同。
我有一个使用AspNetSqlMembershipProvider来验证用户的网站。我想从控制台应用程序使用相同的数据库。根据Web上的几篇文章,我可以使用ASP.NET外部的System.Web.Security.Membership类,将相应的部分从web.config复制到app.config。这就是我所做的。
我的控制台应用程序可以获取具有所请求名称的用户,并且我可以确认该用户已被批准且未被锁定但是ValidateUser返回false以获得正确的用户名和密码对。
我发现人们在迁移代码方面遇到问题的文章可能是由于机器密钥不匹配造成的,但也发现了一个引用说只有在passwordFormat属性等于加密而我使用哈希时才使用机器密钥。 / p>
问题是两段代码 - 网站和控制台应用程序 - 是否在不同的程序集中,并且在密码散列期间正在使用程序集名称或其他属性?在这两种情况下,应用程序名称属性都设置为/.
我应该继续使用这种方法还是直接访问数据库并自己散列密码?
答案 0 :(得分:0)
看一下这篇文章:
http://www.theproblemsolver.nl/usingthemembershipproviderinwinforms.htm
在app.config中添加成员资格配置设置可能会有所帮助。
希望它有所帮助!
答案 1 :(得分:0)
事实证明,网站代码的原作者 - 不是我 - 在使用之前将输入的密码转换为大写。因为我不知道这个并且我的控制台应用程序没有这样做,所以ValidateUser正确报告密码不匹配。