2012-01-24 42 views
0

我一直在這限制訪問某些文件夾annonymous用戶,並允許訪問的文件夾,這些都記錄在誰一個網站項目。 這是我開發的機器上工作完美。窗體身份驗證不工作後發佈

然而,由於發佈網站,並部署到Web服務器(Windows Server 2008中,IIS7)表單驗證似乎並不奏效。匿名用戶可以訪問「受限制」文件夾。 我在開發機器和網絡服務器上比較了webconfig,它們完全一樣。

我設置了訪問/限制使用使用該tutorial內置在.NET Framework中的網站管理工具的開發機器上的目錄。但是我明白這個工具只是本地主機?

請注意:我不使用asp.net登錄和註冊的控制。我在代碼中使用自定義函數後面(C#)

這方面的問題引起的位置的變化? 開發機目錄:C:\用戶\威震\文檔\ Visual Studio 2010的\項目\ Osqar - V0.2 \ OSQARv0.1 Web服務器目錄:C:\的Inetpub \ wwwroot的\ Osqar

我有點迷失在這裏,所以任何意見將不勝感激。

這裏是Web配置文件

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=169433 
    --> 
<configuration> 
    <connectionStrings> 
     <add name="dbConn" connectionString="data source=mssql.database.com; Initial Catalog=devworks_oscar;User ID=myusername;Password=password" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <system.web> 
     <authentication mode="Forms"> 
      <forms name="Osqar" loginUrl="/login/login.aspx" protection="All" path="/" timeout="60" /> 
     </authentication> 

     <compilation debug="true" /> 
     <pages /></system.web> 
    <system.webServer> 
     <defaultDocument> 
      <files> 
       <add value="index.aspx" /> 
      </files> 
     </defaultDocument> 
    </system.webServer> 
</configuration> 
+1

哪裏authroization規則(訪問規則)可以在以下?如果你讓他們在網上。配置在子文件夾中,檢查這些規則的存在或以其他方式發佈標籤 – Mubarek

+0

使用ASP.NET網站管理工具(有問題的鏈接)創建的規則。然後,我發佈了網站,以便在Web服務器的InetPub文件夾中創建一個子文件夾。授權角色在開發計算機的webconfig中不可見,但它仍然有效。以上顯示了開發機器(工作)的webconfig – HGomez90

+0

當然,它的工作原理是默認規則允許所有用戶。是的,網站管理工具(WAT)添加了規則,並且在出現提示時應允許對web.config所做的更改。或點擊VS上的全部保存。 – Mubarek

回答

1

<cofiguraation>主要標籤喜歡把這個:

<configuration> 
<location path="~/RestrictedFolder"> 
    <system.web> 
    <authorization> 
    <deny users="?"/> 
    </authorization> 
    </system.web> 
</location> 
.... 

,如果你限制特定文件執行:

<location path="~/securedpage.aspx"> 
    <system.web> 
    <authorization> 
    <deny users="?"/> 
    </authorization> 
</system.web> 
</location> 

不要在部署項目中的這些變化在web.config

或者作爲Wiktor的建議用於阻止匿名訪問的網站作爲一個整體

把它<system.web>下可能之前或之後<authentication>標籤

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

或者創建項目的根目錄下的一個文件夾,並把受保護的頁面文件夾內。在文件夾上R-點擊添加新的web.config文件,並把<system.web>標籤

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

最後一部分是讓它工作的那部分。爲受保護的目錄創建一個新的web.config。謝謝 – HGomez90

2

authorization部分似乎缺少(?)。你應該有這樣的事情

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

沒有關於授權所要求的水平(拒絕匿名用戶)的信息,應用程序服務器將讓大家到處走。

+1

我認爲他有一個子文件夾中的web.config,並根據他的問題認證在部署之前工作 – Mubarek

+0

@nuux是的,這是正確的。它位於inetpub文件夾中,然後位於該特定項目的文件夾(Osqar)內。 Web服務器託管許多網站。 Wiktor Zychla,我試過這個解決方案,但是因爲我沒有使用ASP.NET成員資格控件,所以這將不起作用。 – HGomez90

+0

@Rupert:我問你是否在同一個項目中有另一個web.config文件。如果您已經顯示,否則顯示與安全性相關的完整webconfig標記。還有一件事,Wiktor發佈的規則必須使用是否使用成員資格或窗體或窗口。問題是你的項目有什麼樣的規則?你知道,如果使用不當,規則可能會互相覆蓋。 – Mubarek