有没有办法在没有会员提供者的情况下使ChangePassword控制工作?就像Login控件通过Authenticate事件一样,我可以让这个组件使用我的密码更改功能,然后在没有编写自定义提供程序的情况下显示成功视图吗?
谢谢, 尤金。
修改
通过Reflector进行一些研究后我得出的结论是,如果没有MembershipProvider,这个控件完全没用。每个逻辑位(如读取配置文件和验证用户输入)都外包给提供者,因此您还必须编写此通用代码。
这是足以使此控制工作的功能列表:
public bool ChangePassword(string username, string oldPassword, string newPassword)
public MembershipUser GetUser(string username, bool userIsOnline)
public int MinRequiredNonAlphanumericCharacters { get; }
public int MinRequiredPasswordLength { get; }
如果从ChangePassword
函数返回false,则后两个仅用于错误消息。
答案 0 :(得分:2)
通过反射器查看.NET 3.5源代码,当受保护的OnBubbleEvent检测到ChangePassword按钮事件时,它调用AttemptChangePassword()。该方法的实现看起来大致如下:
private void AttemptChangePassword() {
...
this.OnChangingPassword(loginCancelEventArgs);
if(!e.Cancel) {
MembershipProvider provider = LoginUtil.GetProvider(this.MembershipProvider);
...
}
看起来你可以:
所以它看起来有点可能,但是控件肯定不是为了这个用途而设计的 - 它很好地连接到MembershipProvider。