2016-01-07 95 views
0

我正在使用表單身份驗證。重定向某些頁面並拒絕其他人訪問?

根Web.config有...

<authentication mode="Forms"> 
    <forms loginUrl="~/Auth/Login.aspx" timeout="2880" defaultUrl="~/Search.aspx" /> 
</authentication> 

...因此,如果未認證用戶被拒絕訪問,通過像在子文件夾中的Web.config下面的一個入口......

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

...那麼未登錄的用戶會被重定向到Login.aspx頁面。


第一個問題

如果一個未經驗證的用戶請求的一些(但不是全部)的頁面,或從一個子文件夾(而不是其他)要求的文件,我想通過返回的HTTP拒絕訪問而不是將它們重定向到(HTTP 302)到登錄頁面。

我該怎麼做?當前未經身份驗證的用戶總是被重定向到登錄頁面,而不是被簡單地拒絕訪問。


第二個問題

我還使用「基於角色的權限」,比如我有一個名爲監事的作用。

某些文件夾的訪問僅用於監事所以這些文件夾中有一個web配置像

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

如果沒有監督員角色的認證(登錄)用戶試圖訪問,他們也將被重定向到登錄頁面(雖然他們已經登錄)。

我可以改變它嗎(例如,返回HTTP 403或重定向到其他失敗頁面)?

回答

0

你將不得不通過創建將在Page_Init

Public Shared Sub CheckAccess() 
If My.User.IsAuthenticated And (Condition Here) Then 
Response.Redirect("AccessDenied.aspx") 
End If 
End Sub 

Protected Sub Page_Init (sender As Object, e As EventArgs) Handles Me.PageInit 
CheckAccess() 
End Sub 
+0

一些,我想拒絕訪問文件的運行過程手動執行此操作(通過返回HTTP 403)是圖像文件,PNG文件,它們沒有Page_Init。 – ChrisW

+0

你應該分開不同文件夾中的文件並在web.config中設置它們的訪問控制 –

+0

我這樣做了(如OP所述),但禁止目錄中的文件重定向(HTTP 302)到登錄頁面,我問的是其中一些可以通過拒絕訪問(HTTP 403)來代替。 – ChrisW