我正在閱讀.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