2012-04-03 140 views
3

我正在使用窗體身份驗證的ASP.NET網絡窗體應用程序。問題是,它忽略了我的路線並重定向到login.aspx頁面。使用窗體身份驗證在ASP.NET Web窗體中路由

我有以下的路線設置:

routes.MapPageRoute("/locale", "{locale}", "~/shorturl/transfer.aspx", 
      false, 
      new RouteValueDictionary { { "locale", "[a-z]{2}" } }); 

如果我使用以下網址:http://server/minneapolis它進入登錄頁面。如果我將以下內容添加到Web.Config,那麼它「工作」並轉到transfer.aspx頁面。

<location path="minneapolis"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
</location> 

我不想將所有的語言環境添加到web.config,似乎打敗了目的。

我也可以改變到(通知我添加 「/ LOC /」)的路由:

routes.MapPageRoute("/locale", "/loc/{locale}", "~/shorturl/transfer.aspx", 
      false, 
      new RouteValueDictionary { { "locale", "[a-z]{2}" } }); 

之後我可以改變的Web.Config位置路徑LOC(位置路徑= 「LOC」)它的工作原理,但我真的很喜歡它的根源。有沒有辦法做到這一點?

這是.NET V4和我要支持IIS 7和IIS 7.5

+0

你的http:// server/minneapolis路徑是否是安全的...我的意思是用戶需要通過身份驗證才能訪問http:// server/minneapolis ...?如果可能的話,你可以將你的頁面代碼放在後面? – NiK 2012-04-03 20:27:28

+0

我不希望它是安全的,但取決於它是如何配置它是或不是。您希望查看後面的代碼的哪個頁面? – Dean 2012-04-04 15:06:01

回答

0

我不認爲有辦法做到這一點。授權是基於URL的,當授權模塊確定如何授權請求時,似乎檢查來源 url而不是目標url。

就像6個月剛剛失敗完全一樣,你在我的項目之一。我結束了你提出的解決方案 - 我的路由請求被放在一個「子文件夾」中,我創建了一個本地web.configauthorization allow users=*

如果有解決方法,我也想聽聽它應該如何完成。