2012-01-05 83 views
2

我在我的網站的根目錄上有一個目錄,其中包含一些文件(通常爲html)。這些文件只能被登錄用戶訪問。我怎樣才能做到這一點?我相信這可以通過模擬來完成,但我不知道我能夠如何實現它。你能指導我正確的方向嗎?ASP.Net目錄安全

目前,我已經添加了這些設置,以我的Web.config文件:

<location path="TestData"> <!-- 'TestData' is the directory which I want to deny access for --> 
    <system.web> 
     <identity impersonate="true"/> 
     <authorization> 
      <deny users="?"/> 
     </authorization> 
    </system.web> 
</location> 

有什麼,我有編碼做?

PS:這是一個web服務應用程序。

更新:它的工作部分!具體如下: 它只拒絕.aspx頁面,甚至登錄的用戶也無法訪問這些文件。

我正在使用Windows身份驗證。

回答

1

你不需要模仿。如果您有窗體或Windows身份驗證,您的<deny users="?"/>將拒絕所有匿名用戶。要回答你的問題:不,你不必在代碼中明確拒絕任何用戶。

How to: Implement Simple Forms Authentication

爲了確保non-ASP.NET文件,你需要註冊一個HttpHandler會做到這一點。請參閱this reference on how to register the handler

+0

我已經更新了我的問題。 – NaveenBhat 2012-01-05 13:37:54

+0

@Knvn你是否拿出'impersonate'部分?您不應該獲得部分訪問權限,因爲您擁有目錄授權。 – 2012-01-05 13:50:30

+0

雅我嘗試刪除'impersonate'部分,但它仍然只適用於'.aspx',而不是其他類型,如'.html'或'.txt' – NaveenBhat 2012-01-05 13:59:08

0

你不需要模仿。 Impersonate用於使應用程序以不同於iis中應用程序池用戶的用戶身份運行。 source

如果您正在使用表單/ Windows身份驗證,然後

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

應該足夠,並會阻止

+0

我已更新我的問題。 – NaveenBhat 2012-01-05 13:38:29

0

未登錄用戶誰您需要添加

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

<system.web></system.web>

並使用表單認證l IKE

[更新]:在您使用窗口認證見

MSDN

+0

我可以使用'Forms'認證,如果它是一個web應用程序......但它是一個web服務應用程序,並且通過向客戶端應用程序返回適當的值進行認證(flash)。 – NaveenBhat 2012-01-05 13:53:14