SqlMembershipProvider 相关功能深入解析
1. 密码格式变更难题
在实际应用中,若要将现有用户从加密或哈希密码转换为不同格式,会面临诸多困境。因为重新生成密码需调用 ChangePassword 方法,而此方法要求提供旧密码,由于不知原始密码,难以实现自动化转换。即便让用户登录并手动更改密码, ChangePassword 方法内部逻辑会先从数据库获取现有密码信息(包括密码格式),验证旧密码后,再用数据库中存储的密码格式对新密码进行编码,无法在验证旧密码和编码新密码之间插入使用新密码格式的逻辑。
例如,从哈希密码转换为加密密码,只能在用户登录时动态重新创建用户账户;从加密密码转换为哈希密码虽可借助解密密钥实现一定程度的自动化,但涉及将密码和密码答案的 Base64 编码表示转换为字节数组,还需用正确算法解密,且存在隐私问题。所以,在网站上线前应确定好密码格式,避免后续更改导致删除并重新生成现有用户账户。
2. 自定义密码生成
当使用 SqlMembershipProvider 的密码重置功能时,默认会依赖其自动生成密码的行为。默认使用 Membership.GeneratePassword 方法创建符合配置的密码强度要求的密码,这些要求由 minRequiredPasswordLength 和 minRequiredNonAlphanumericCharacters 配置属性定义。即便将 minRequiredNonAlphanumericCha
超级会员免费看
订阅专栏 解锁全文
8

被折叠的 条评论
为什么被折叠?



