我正在阅读.NET4源代码(可以免费下载它们用于研究),并且在执行System.Web.Security.FormsAuthenticationModule
时发现了一些奇怪的东西。FormsAuthenticationModule中的这段代码应该如何工作?
类声明如下:
public sealed class FormsAuthenticationModule : IHttpModule
其中IHttpModule
有两个方法 - Init()
和Dispose()
。
内OnEnter()
那里是这些行:
// Step 2: Call OnAuthenticate virtual method to create
// an IPrincipal for this request
OnAuthenticate(new FormsAuthenticationEventArgs(context));
其中OnAuthenticate()
声明如下:
// OnAuthenticate: Forms Authentication modules can override
// this method to create a Forms IPrincipal object from
// a WindowsIdentity
private void OnAuthenticate(FormsAuthenticationEventArgs e) {
现在的类是sealed
,所以这是不可能的继承。 OnAuthenticate()
也不是virtual
所以我不知道它怎么可能被覆盖。
因此,它看起来像这些评论只是过时的,重写OnAuthenticate()
已不再可能。
我有什么不对吗?这个代码可能允许覆盖OnAuthenticate()
吗?
AFAIU这个类是非常[开始](http://msdn.microsoft.com/en- us/library/system.web.security.formsauthenticationmodule(v = vs.71).aspx) – 2013-03-04 12:06:04
从名称和参数可以看出,这是['event trigger'](http://stackoverflow.com/a/ 2448530/60761),他们通常应该是虚拟的。这当然与密封冲突。最差的情况是一个班级可以订阅自己的活动。 – 2013-03-04 12:16:23