什么原因可能导致WebSecurity.ChangePassword()失败?

时间:2011-08-13 11:29:15

标签: membership-provider webmatrix razor

我正在开发一个Razor项目,需要将现有的用户数据库集成到SimpleMembership Provider DB Schema中。这是通过指定我现有的User表以及SimpleMembership API将用于Username和UserID的列来完成的。

WebSecurity.InitializeDatabaseConnection("DB_ConnStr", "User", "UserId", "Username", true);

在此过程中,我使用现有数据库中每个用户行的新记录填充webpages_Membership表。这已经很好了,我已经编写了一些代码来处理每个现有用户的插入。

在插入过程中,为简单起见,我使用虚拟加密密码令牌,并为每个人设置密码。然后我需要在记录上运行另一个脚本,为webpages_Membership表中的每个用户设置正确的密码。这涉及解密现有用户表中的当前密码,然后调用:

WebSecurity.ChangePassword( username, dummyPwd, newPwd) 

对每个用户,将解密的当前密码作为'newPwd'参数传递。

对于超过100,000条记录,99%的案例都可以正常工作。但在大约40起案件中失败了。

可能导致此方法失败的原因是什么?

1 个答案:

答案 0 :(得分:0)

我的第一个猜测是新密码的哈希值可能会超过128个字符的限制。

当ChangePassword调用失败时,您是否可以捕获异常以获取失败原因背后的详细信息?