2023-02-17 386
如此说明 http://msdn .microsoft.com/en-US/Library/System.Web.Security.Membershipprovider.OnValidationPassword.aspx
“当validationPassword事件已完成时,可以检查提供为E参数作为E参数的ValidatePasswordEventargs对象的属性以确定是否应该被抛出当前操作,如果是存储在失败信息属性中的特定异常,则应被抛出. “
这里是一些细节/代码,它真正显示了为什么失败形象可能为null http://论坛. ASP.NET/t/991002.aspx
根据我的会员设置,我应该出现一个例外,密码与密码安全条件不匹配,但不会发生.
然后我确实尝试调试system.web.applicationservices.dll(在这里,在这里位于.NET 4.0 System.Web.Security)框架代码,看看真的发生了什么,但我不能进入这个程序集,可能是因为这个[TypeForwardedFrom(“System.Web, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a”)]
public abstract class MembershipProvider : ProviderBase
很容易我可以进入任何另一个.NET 4.0汇编,但在此之上.我确实检查了system.web.applicationservices.dll的符号.
现在我只有一个想法如何修复它 – 覆盖方法onvalidatingpassword(validatepasswordeventargs e).
那是我的故事.
可能是一些可能有帮助:
1)任何想法为什么onvalidatingpassword不起作用?
2)任何想法如何进入它?
已读取此 http://forums.asp.net/t/991002. aspx 再一次.这是我的解决方案
//Override OnValidatingPassword
protected override void OnValidatingPassword(ValidatePasswordEventArgs args)
{
//Any logic to process password validation conditions
//e.g:
if (args.Password.Length < MinRequiredPasswordLength)
args.FailureInformation = new ArgumentException(String.Format("Password is too short, min password length {0}", MinRequiredPasswordLength.ToString()));
if (args.UserName == args.Password)
args.FailureInformation = new ArgumentException(String.Format("Password should not be equal to username"));
//Also here could be any logic to throw an exception if needed
//e.g:
if (args.FailureInformation != null)
throw args.FailureInformation;
//Calling base
base.OnValidatingPassword(args);
if (args.Cancel)
{
if (args.FailureInformation == null)
args.FailureInformation = new ArgumentException(String.Format("Custom Password Validation Failure for password '{0}'", args.Password));
throw args.FailureInformation;
}
}
您不必覆盖onvalidationPassword方法,但由于文档表示您需要处理validationPassword事件.检查 membershipvalidatePlayHeventHandler .
使用.NET反射器并检查SQLMembershipProvider类的ChangePassword方法.您将看到SQLMembershipProvider没有任何对validationPassword事件注册的处理程序.
所以我认为的是在您的自定义会员提供者的oninit中,您注册成员资格.ValidationPassword以及您进行编码的处理程序.上面链接中的示例示例.
希望我不会误解你的问题.
您的问题似乎表明您正在使用自定义会员提供商?所以我假设你直接影响成员文件前提?
class MyMembershipProvider : MembershipProvider{…}
在这种情况下,OnValidationPassword永远不会自动调用…您必须自己调用它.
所以,基本上我很困惑.你能澄清你的设置吗?您是否使用默认会员提供商或自定义?如果自定义,您从中继承哪个类?
为查看代码,您可以使用反射器进行.
以上所述是小编给大家介绍的自定义ASPNetMembership FailureInformation总是为空,OnValidatingPassword问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/34128.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态