2013-11-26 54 views
0

在我的ASP .Net應用程序(不是MVC,只是ASP .Net)我有幾個Web表單,並且需要限制用戶直接訪問多個網頁。ASP .Net Web.config

但是在從其他頁面的應用程序鏈接和根據應用程序的功能,應該能夠重定向(Response.Redirect或表單提交在後或獲取方式)到這些頁面,但嚴格地不直接輸入到瀏覽器的URL並訪問它們。

我已經在那些頁面加載事件(在哪些需要限制直接訪問)中嘗試以下,並且工作得很好。

if (Request.UrlReferrer == null) 
{ 
    Response.Redirect("~/Index.aspx", true); 
} 

但我得到的問題是我對ASP.Net相對較新,不知道這是否是最好的方法來做到這一點。

1)。主要是我搜索,但需要知道我是否可以使用web.config文件完成此操作。如果是的話,將不勝感激,如果有人可以解釋如何web.config文件應該做到這一點...

2)。另外我想重定向用戶,如果他在站點託管的域名內輸入錯誤的URL ...爲此,我在web.config中執行了以下操作,但是想知道這是否正確。謝謝...

<customErrors mode="On" defaultRedirect="~/Index.aspx"> 
    <error statusCode="404" redirect="~/Index.aspx" /> 
</customErrors> 
+0

一般你會重定向到一個特定的「頁面未找到」或「404錯誤」頁面,而不是回到索引 - 這很可能會混淆用戶,並被認爲是「黑暗的做法」。見http://www.codinghorror.com/blog/2007/03/creating-user-friendly-404-pages.html。關於重定向問題,這應該有多安全?沒有什麼能夠阻止用戶使用JavaScript將他們自己從公共頁面重定向到所謂的「安全」的用戶,如果所有被檢查的內容都是推介的存在。也許你應該考慮令牌? – pwdst

回答

2

您可以將它添加到你的web.config文件,以限制特定用戶:

<authorization> 
<allow users="user1, user2"/> 
<deny users="?"/> 
</authorization> 

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

在你的C#中,可以使用Response.Redirect

protected void Application_EndRequest(Object sender, EventArgs e) 
{ 
    if (HttpContext.Current.Response.Status.StartsWith("401")) 
    { 
     HttpContext.Current.Response.ClearContent(); 
     Response.Redirect("AccessDenied.aspx"); 
    } 
}