2010-10-06 198 views
3

我正在開發一個.NET的ASP.NET Web應用程序,並試圖拒絕所有未經授權的用戶訪問我的應用程序,但只允許他們登錄頁面。web.config授權拒絕未授權

下面是這是我的System.Web部分內部的代碼片段:

<authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" timeout="60" name="APPNAME" slidingExpiration="true" /> 
</authentication> 
<authorization> 
    <deny users="?" /> 
</authorization> 

我也有這個之外允許訪問登陸頁面:

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

不過我當我沒有登錄時仍然能夠訪問頁面,我怎麼能阻止這種情況發生?

我甚至還添加了一個web.config文件到主文件夾中存儲的大部分網站上的文件,其內容是:

<?xml version="1.0"?> 
<configuration> 
    <appSettings/> 
    <connectionStrings/> 
    <system.web> 
     <authorization> 
      <deny users="?" /> 
     </authorization> 
    </system.web> 
</configuration> 

但這仍然沒有任何效果。

解決方案

我曾跟隨了asp.net(http://www.codeproject.com/KB/aspnet/10ASPNetPerformance.aspx)提供一些優化建議,並刪除AnonymousIdentification HTTP模塊,我真正需要的。

+2

您確定您尚未登錄?你不只是有一個身份驗證cookie仍然存在於你的機器上,記住你最後的登錄? – Paddy 2010-10-06 15:50:24

+0

我剛剛清除了我的瀏覽器緩存/ cookies並再次嘗試,並且仍然允許我訪問所有內容 – Malachi 2010-10-06 15:53:04

回答

2

嘗試將LoginStatus控件添加到您的頁面以檢查您的登錄狀態。

您可能以前選中了「保存的密碼」選項。使用control userpassword2命令檢查並清除緩存的密碼。

+0

我已經添加了該內容,並生成了一個登錄鏈接。所以我絕對沒有登錄。我會查看我的代碼/ web.config中的任何問題。 – Malachi 2010-10-06 16:13:58

+0

我解決了它 - 請參閱上文,瞭解我的解決方案是什麼 – Malachi 2010-10-06 16:15:56

+0

長篇文章。無論如何,好工作。 :) – bla 2010-10-06 16:33:30

6

我認爲你會發現,如果你在不同的文件夾中放置不同的網頁和不同的目標角色,處理ASP.NET授權要容易得多。這不是要求。這只是更容易管理。

如果您在VS 2010中(我不確定這是否在快速版本中),請嘗試使用項目菜單底部的ASP.NET配置工具。

我發現很容易通過使用該工具瞭解web.config文件的工作方式,首先對安全性進行了一些更改,然後查看它做了什麼。

如果你只是在2010年VS空白的ASP.NET應用程序啓動,你可以鎖定一切,但在登錄並通過使兩個改變註冊頁面:

根Web.config

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

在帳戶子文件夾中的web.config

<?xml version="1.0"?> 
<configuration> 

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

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

</configuration> 

什麼,你會看到的是,用戶立即指示到登錄頁面,但他們仍然可以註冊。