2009-09-01 14 views
3

我們正在使用表單身份驗證和角色來限制對網站的某些頁面和區域的訪問。當用戶沒有被授權時,或者因爲他們沒有登錄或沒有所需的角色,他們會被重定向到具有返回url的登錄頁面。ASP.NET在用戶未通過身份驗證時覆蓋重定向內的默認returnto參數

我們定義什麼訪問在web.config使用授權標籤,如需要:

<authorization> 
    <deny users="?"/> 
</authorization> 

我們正在對Web應用程序使用HttpContext.Current.RewritePath爲友好的URL和動態頁面。因此,「/MyPages/MyDocuments.aspx!」的請求被重寫爲「/PageTypes/Library.aspx」或沿着這些行的東西

但是,當應用程序重定向是因爲用戶沒有權限時,ReWritePath使用而不是原始網址。

什麼我需要重寫,以便returnto的URL請求的URL,而不是實際的心理路徑?

+0

代碼中的哪個位置正在執行重寫? HTTP模塊,basePage等? – PortageMonkey 2009-09-05 13:35:40

回答

0

我最終什麼事做的是移動我的代碼到Application_AuthorizeRequest這意味着被請求的頁面之前,其仍保持着原始URL完整的用戶進行身份驗證。

1

根據什麼版本的IIS(6或7)你正在運行,答案可能會有所不同,但我懷疑問題是ASP.NET請求管道首先使用表單身份驗證對用戶進行身份驗證,然後再運行RewritePath代碼/模塊,th我們改寫正常的回返應對措施。

它們的鍵可能比認證/授權模塊更早地將重寫模塊插入管線。如果您正在使用原始代碼而不是HTTP模塊在您的基類,global.asax等中執行此操作,請首先在執行代碼之前檢查用戶是否有效/或授權。

ASP.NET Pipeline and Thoughts on Rewriting Vs Routing

相關問題