AspNetSqlMembershipProvider和PasswordRecovery控件

时间:2009-04-14 16:11:15

标签: asp.net asp.net-2.0 passwords membership membership-provider

我的方案是我有一个asp.net 2.0应用程序Web应用程序,它具有AspNetSqlMembershipProvider属性:

  

enablePasswordRetrieval =“false”和passwordFormat =“Hashed”

但现在需要将未加密的用户密码存储为明文并将其显示给超级用户。我通过将AspNetSqlMembershipProvider属性更改为:

来完成此操作
  

enablePasswordRetrieval =“true”和passwordFormat =“清除”

问题是PasswordRecovery控件的行为方式。根据我的阅读,它检查AspNetSqlMembershipProvider标签的属性,如果enablePasswordRetrieval =“true”和passwordFormat =“Clear”,它将尝试检索密码,这在密码有效地仍然存储为散列密码时会导致问题。当AspNetSqlMembershipProvider属性为enablePasswordRetrieval =“true”和passwordFormat =“Clear”时,有没有办法强制PasswordRecovery控件重置不检索密码?

对于长篇大论的解释感到抱歉,所有帮助/指针一如既往地非常感谢。谢谢。

3 个答案:

答案 0 :(得分:0)

我认为尝试使用两种方法在数据库中存储密码不会有任何好运。

我的建议是更改已经散列密码的帐户的密码,以便将它们存储为纯文本并从那里继续。

或者,如果您必须存储一些散列密码和一些明文密码,那么您必须考虑扩展成员资格提供程序以支持此功能。根据我的经验,这通常比它的价值更麻烦。

答案 1 :(得分:0)

根据我的经验,更改密码格式是有问题的 - 我认为没有办法让提供商自动为您处理。

您可能需要考虑强制哈希用户在下次登录时更改其密码,或者只是编写一个过程并在数据库中重置密码。密码表中有一列(我现在不能看一下)描述格式,因此您可以将该值从哈希更改为清除,然后哈希值将是其明文密码,并且应该工作到登录。

答案 2 :(得分:0)

另外,请记住,以明文存储密码存在法律问题。如果这些密码被滥用或泄露,您将负责所有被泄露的数据(包括通过您拥有的任何其他服务访问的数据,但用户使用相同的密码)。< / p>