2013-06-19 104 views
0

我試圖實現FormsAuthentication,但我得到了一些奇怪的行爲。 這些都是從行web.configFormsAuthentication允許訪問所有頁面

<authentication mode="Forms"> 
    <forms loginUrl="/contentpages/login.aspx" name="SiteAuth" protection="All" timeout="30" path="/" defaultUrl="/" requireSSL="false" cookieless="UseCookies" enableCrossAppRedirects="false" /> 
    </authentication> 
    <authorization> 
    <allow users="?" /> 
    </authorization> 

所以,如果我得到它的權利,這應該允許所有匿名用戶訪問根目錄下的網頁上。

訪問網站主頁(http://www.sample.com/)將我重定向到登錄頁面,出於某種原因。 如果我重新輸入地址欄中的地址,它會將我帶到網站主頁(假設沒有必要登錄,當我登錄頁面時我沒有登錄,只是重新輸入地址中的地址酒吧)

這是爲什麼發生?

我希望我明確了情況是什麼,如果您需要更多信息,請隨時提問。

+0

好奇,你得到相同的行爲,當你刪除匿名用戶的授權規則? – trnelson

+0

nope,offcourse它不會這樣做,因爲不需要auth。但它仍然很有趣。 – Dementic

回答

1

您可能會看到此功能,因爲您沒有指定位置。試試這個:

<location path="your folder"> 
    <system.web> 
    your authorization 
    </system.web> 
</location> 

另一個問題可能是你如何去授予權利。 「?」定位所有未經認證的用戶。如果您試圖簡單地授予所有用戶訪問權限,則最好使用「*」。

請注意,這些規則是級聯的也很重要。所以你可以添加多個規則來微調你的訪問。例如,如果我想授予訪問特定用戶組並拒絕訪問其他人,我會用:

<authorization> 
    <allow roles="administrators" /> 
    <deny users="*" /> 
</authorization> 
+0

事情是,我想允許訪問所有頁面並僅授權兩頁。添加'Location'標籤會創建一個500錯誤(即使我很難將它添加到「配置」部分中,並且它仍然可以解釋這種行爲 – Dementic

+0

您應該可以使用允許用戶添加位置路徑=「站點根文件夾」 =「*」,然後爲每個要拒絕的頁面創建另一個位置,它是級聯的,因此您設置的每個授權都建立在前一個授權的基礎上,我希望看到您收到的錯誤消息。 – LoganGoesPlaces

+0

我得到的錯誤是'dumb'錯誤: 服務器錯誤 500 - 內部服務器錯誤 有一個問題出現在服務器上,您正在查找的資源無法顯示 – Dementic

相關問題