0

我发现我认为 MembershipProvider 的一个非常烦人的问题......我希望其他人已经遇到过这个问题并优雅地解决了它。

我创建了一种在更改密码时计算密码强度的方法,以便我可以将其存储以用于管理目的(审核、强制重置等)因为我不想存储纯文本密码,所以这个值需要是在密码更改期间计算。

更糟糕的是,我正在对现有代码库进行这种改进,尝试不触及特定项目,尽可能地支持较小的配置更改。调用我的会员提供程序的代码按以下顺序调用:

获取用户更改密码更新用户

不幸的是,在 ChangePassword 之后调用 UpdateUser 会导致丢失更新异常。对我来说,这似乎是提供者结构中的一个根本缺陷。ChangePassword 是验证密码所必需的,但 UpdateUser 无法知道进行了哪些更改。

有没有其他人遇到过这个问题?

注意:我知道我可以将更改密码工作流程分开并完全避免 UpdateUser。我试图不这样做,因为它需要我完全替换现有代码块,这些代码块可能会在现有代码库的未来版本中更新。

4

1 回答 1

0

我通过派生一个新的 MembershipUser 并在那里覆盖 ChangePassword 解决了这个问题,它在其基本调用中调用了 ChangePassword。

我调用了基本方法,如果结果为真,则将我的密码“元数据”构建到那里的对象中。当更新方法被调用后,正确的数据出现在对象上。

如果有人找到更好的解决方案,我会暂时保留这个问题。

于 2012-11-08T10:30:02.213 回答