2011-05-23 51 views
3

什麼時候路由發生在ASP.NET MVC管道中?路由何時發生在流水線中?

ASP.NET Application Life Cycle Overview for IIS 7.0

是在步驟號2(執行地址映射)?

我打算有一個id幾條路線

「激活/(編號)」

「forgotpassword /(編號)」

我希望能夠訪問在步驟4 - 身份驗證請求的早期階段。這樣我就可以將身份驗證令牌通過url的id部分傳遞給我的自定義驗證模塊。

所以我可以訪問我的自定義身份驗證模塊中的id屬性,還是我必須手動從請求url中提取它?

感謝您的幫助,

鄧肯

回答

2

UrlRouting似乎發生在步驟9 - PostResolveRequestCache。

所以它實際上發生AuthenticateRequest之後是步數4

這是document for UrlRoutingModule

我擡頭一看它的init()方法中的反射器,這是它簽約的PostResolveRequestCache事件。

所以我想我必須嘗試寫一些代碼,從優雅的手動URL中提取令牌..

1

我知道它不是你想要的答案 - 但在URI安全的角度來看令牌是一個壞主意。他們可以通過JavaScript讀取,然後發送到世界上任何其他網站。

爲了回答你的問題,路由是一個httpmodule,所以它發生得很早,但發生在你的認證之後。請參閱:http://msdn.microsoft.com/en-us/magazine/dd347546.aspx#id0070044

+0

嗯,我不知道我與你弗里斯特點一致。對於初學者來說,令牌將被加密。其次,我只打算使用這種身份驗證方法進行帳戶激活並重置密碼頁面,以便我可以通過電子郵件向用戶發送允許他們登錄的鏈接。否則,所有認證都將使用cookie完成。這也是幾乎所有網站用於這些帳戶管理任務的標準方式。 – 2011-05-23 18:38:39

+0

另外你的第二點也是我認爲是錯誤的。每個訂閱任何管道事件的模塊都必須實現IHttpModule接口。所以他們都是HttpModules。 FormsAuthenticationModule是一個HttpModule。所以它是一個HttpModule並不一定意味着它出現在AuthenticateRequest事件之前。 – 2011-05-23 18:44:11

+1

作爲執行安全審計的人員,我必須不同意uri上的令牌是標準的。網址上的標記建議不要使用 - 搜索網絡 - 這是一種常見的安全建議。當然,這取決於你的實施。當可以遠程確定機器密鑰時,加密對於一些具有POET漏洞的系統來說意味着很少。 – 2011-05-23 20:20:58