2009-12-09 123 views
1

我想,當我輸入http://localhost/Admin,帶我到頁面http://localhost/Something/Login.aspx。我怎樣才能做到這一點?ASP.NET URL重定向

+0

你想讓這個人登錄到你的網站上的保護區,或者你只想要重定向嗎?請澄清。 – RuudKok 2009-12-09 11:39:41

+2

你能詳細說明一下嗎?您是否希望用戶登錄以訪問某些頁面?或者你只是想執行重定向? WebForms或MVC? – 2009-12-09 11:40:31

+0

我只想重定向到一個特定的URL。 – Emanuel 2009-12-09 11:43:54

回答

5

你在找什麼叫做Forms Authentication。以下是一個非常簡短的介紹

你需要創建一個登錄頁面,使得這樣的電話,驗證用戶的身份後:

FormsAuthentication.RedirectFromLoginPage(userName); 

然後,你需要在web.config文件要連接登錄頁面:

<system.web> 
    <authentication mode="Forms"> 
    <forms loginUrl="~/Something/Login.aspx" /> 
    </authentication> 
</system.web> 

此外,您需要告訴框架,所有低於~/Admin/的URL都需要用戶進行身份驗證。這可以通過該文件夾中添加另一個web.config文件來完成:

<system.web> 
    <authorization> 
    <deny users="?" /> 
    <allow users="*" /> 
    </authorization> 
</system.web> 

閱讀上面鏈接的文章,或搜索「ASP.NET窗體身份驗證」的網站,你很快就會在正確的軌道上。


編輯1 - 如果你想要做的是真的「做一個重定向到一個特定的URL」,那麼這是足夠了:

Response.Redirect("~/Something/Login.aspx") 

從你在提到的URL你的問題,似乎你正試圖執行某種認證/授權計劃。如果這是真的,表單身份驗證是一個更好的答案。


EDIT 2 - 如果你想改寫,不定向,從~/Admin~/Something/Login.aspx請求您可以通過在你的根映射URL映射web.config文件

<system.web> 
    <urlMappings> 
     <add url="~/Admin/Default.aspx" mappedUrl="~/Something/Login.aspx"/> 
    </urlMappings> 
</system.web> 

在這樣做大多數設置中,如果請求的URL以已知後綴結尾,則Web服務器將僅將請求傳遞給ASP.NET,如.aspx。通過欺騙Web服務器將~/Admin的請求傳遞給ASP.NET的方法是使用Web服務器中的「默認文檔」功能。爲此,您必須在~/Admin文件夾中添加一個名爲Default.aspx的空文件。