ASP.NET運(yùn)行時(shí)的處理流程
ASP.NET運(yùn)行時(shí)的處理流程
其實(shí)在ASP.NET中每一個(gè)請(qǐng)求都進(jìn)行了驗(yàn)證和授權(quán)的。進(jìn)行驗(yàn)證和授權(quán)的過程實(shí)際上是通過觸發(fā)相應(yīng)的事件來完成的。
在講述驗(yàn)證事件之前,首先清晰一個(gè)流程:ASP.NET運(yùn)行時(shí)接到一個(gè)請(qǐng)求的處理的流程。
先把流程描述一下,使得大家有個(gè)總體把握:一個(gè)請(qǐng)求來了,經(jīng)過IIS,通過ISAPI,就到達(dá)了ASP.NET的管道中,然后經(jīng)過一些的轉(zhuǎn)化和包裝,然后ASP.NET運(yùn)行時(shí)開始處理這個(gè)請(qǐng)求了,然后是進(jìn)行驗(yàn)證和授權(quán),然后再進(jìn)行一系列的處理,***確定請(qǐng)求是是什么文件,如果是.aspx的,那么然后就開始頁面的生命周期,如下圖。
下面就處理請(qǐng)求時(shí)候觸發(fā)的事件順序如下:
BeginRequest: 開發(fā)處理請(qǐng)求,是處理ASP.NET請(qǐng)求時(shí)觸發(fā)的***個(gè)事件
AuthenticateRequest:處理身份驗(yàn)證
...
AuthorizeRequest:處理授權(quán)
...
所以大家可以看出,其實(shí)在請(qǐng)求的處理過程中,身份的驗(yàn)證和授權(quán)發(fā)生的時(shí)期是很早的。而且有關(guān)驗(yàn)證的一些信息,如用戶名和角色在處理完這兩個(gè)事件之后就已經(jīng)確定,并且填充。下面我想用個(gè)圖來講述:

一般對(duì)于請(qǐng)求的驗(yàn)證和授權(quán),我們是希望也應(yīng)該自己控制這個(gè)過程的,所以我們可以在AuthenticateRequest和AuthorizeRequest的事件處理中加入我們自己的代碼。以上是ASP.NET運(yùn)行時(shí)的處理流程。
【編輯推薦】