繁体   English   中英

ASP.NET或DotNetNuke成员资格的用户创建事件

[英]user creation event for ASP.NET or DotNetNuke membership

我想添加一些在DotNetNuke站点上注册新用户时运行的代码。 有一个自定义注册模块,我可以添加代码。 我担心的是这个注册模块仍然是一个正在进行的工作,并不是我真正掌握的。 有人可能会破坏我添加的代码或做出意想不到的事情。

有没有其他好的选择我可以使用添加代码到用户会员事件?

我正在考虑创建一个源自我们现有提供程序的成员资格提供程序(DNN或ASP.NET提供程序)。 我会扩展CreateUser()的实现,以调用原始实现,然后调用我的自定义代码。

好处是它们与注册组件没有耦合。 但是,与添加HttpModule不同,其中配置与站点的其他方面无关 - 我将隐藏现有的成员资格提供程序。 假设某人想要更新提供程序的原因是另一个原因 - 他们必须重新编译我的类而不是简单地更改web.config文件。

我打算创建一个派生自MembershipProvider的泛型类,然后使用原始提供程序作为泛型类型参数。 我希望这可以将原始提供程序类型包含在web.config定义中。 不成功的C#泛型不允许您从泛型类型参数派生。 :(

如果您从现有的成员资格提供程序派生,为什么在另一个提供程序更改时必须重新编译您的类(假设您没有使用强名称引用)? 提供者模型的整体思想是合同不会改变。 对基本会员提供者的任何更改都是内部的,因为合同必须保持不变。 并且您的提供商必须这样做,因此它也可以被覆盖。 如果您的提供商只是:

class NewMembershipProvider : ExistingMembershipProvider

override CreateUser()
{
    //do custom stuff
    base.CreateUser();
}

您已经干净地抽象了实施细节。 一个人可以改变而不影响另一个。 任何未来的更改都可以通过覆盖您的提供商来实现。

我强烈认为你可能会在这里增加一些复杂性。 事情总是以任何形式破裂,很难实现“无耦合”。 尝试编写一些好的单元测试用例,这样你就可以知道它们何时被破坏而不是创建一个完全不同的处理程序来创建新用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM