e36*_*6M3 6 c# asp.net asp.net-membership membership-provider
我正在努力实现一个自定义成员资格提供程序,它可以对付我数据库中的现有模式,并且有一些想法/问题.
登录控件将自动调用成员资格提供程序的ValidateUser方法,因此无论我如何实现提供程序,登录控件唯一关心的是此方法返回的bool值.令我困惑的是,登录尝试失败可能有很多原因; 用户被锁定,在一段时间内尝试了太多等等.我无法将其传达给控件,因此它可以显示正确的消息.成员提供者的其他属性,如PasswordStrengthRegularExpression,对登录控制也没有任何影响(开箱即用),我希望它会自动以某种方式转换为正则表达式验证器,但这似乎不是案件.
如果Login控件开箱即用的唯一内容(没有手动处理事件并按上述方式进行初始化)是调用成员资格提供程序上的ValidateUser方法,我看不到为什么验证会返回Login控件失败甚至做某些事情,比如根据某个时间窗口限制验证请求.最后我的问题是为什么我甚至会使用会员提供商与登录控制一起使用?看起来它只是针对Yes/No类型响应而设计的,这是非常严格的.
除非我的假设出错,否则Login控件作为成员资格API之间的界面似乎过于严格,无法使用.也许API更适合其他auth控件,如ChangePassword更好,但对于实际的Login控件,我没有看到重点.
我很感激你的想法.
你是对的。要实现您正在讨论的逻辑,您需要实现 Authenticate 事件。这样您就可以在进行自己的验证后写回自定义错误消息。
另一方面,我认为密码强度不应在身份验证时进行验证,而应在用户创建时进行验证。
你可以写这样的东西:
protected void Login_Authenticate(object sender, AuthenticateEventArgs e)
{
try
{
e.Authenticated = myMembershipProvider.ValidateUser(LoginControl1.UserName,LoginControl.Password);
}
catch(Exception ex)
{
LoginControl1.FailrureText = ex.Message;
}
}
Run Code Online (Sandbox Code Playgroud)
并在 ValidateUser 方法中抛出自定义异常。快乐编码...
| 归档时间: |
|
| 查看次数: |
2958 次 |
| 最近记录: |