2012-07-31 59 views
2

我在我的ASP.NET項目中使用了FormsAuthenticationASP.NET Memberships and Roles。我有一些aspx文件,只能通過認證的用戶查看/訪問。我想我可以用以下兩種方法之一來做到這一點。使用FormsAuthentication在ASP.NET中進行身份驗證

  1. 配置web.config文件。允許角色爲「admin」和「成員」的用戶訪問這些apsx文件,並拒絕所有其他匿名用戶。

  2. 在這些apsx文件的Page_Load事件,只是檢查了短路電流用戶是否經過驗證或不使用HttpContext.Current.User.Identity.IsAuthenticated

我想知道這兩種方法是否相同或者不進行apsx文件。

回答

1

它們不等價。方法1.只允許訪問「管理員」和「成員」角色。如果您添加其他角色,他們將無法訪問。方法2讓任何登錄用戶訪問數據。

我認爲首選的方法是根據角色應該訪問它們來組織目錄中的aspx文件。然後配置web.config中的目錄的訪問權限。

+0

對於方法2,我可以使用HttpContext.Current.User.IsInRole檢查用戶是否具有'admin'或'members'角色。現在是否等同於方法1? – 2012-07-31 17:46:32

+0

是的,檢查'HttpContext.Current.User.IsInRole'會使這些方法等價。 – 2012-08-01 09:30:32

0

你好,你一定身份認證與授權之間存在明顯

  1. 「HttpContext.Current.User.Identity.IsAuthenticated」 是:身份認證

  2. 「允許用戶與角色 '管理員' 和 '成員' 「是:授權,認證後,我們執行的授權

你可以閱讀這篇文章:http://www.duke.edu/~rob/kerberos/authvauth.html

認證是系統可以安全地識別用戶的機制。認證系統的問題提供了答案:

Who is the user? 
Is the user really who he/she represents himself to be? 

授權系統的問題提供答案:

Is user X authorized to access resource R? 
Is user X authorized to perform operation P? 
Is user X authorized to perform operation P on resource R? 
1

正如其他人提及,這是不等價的。但是,即使您修改「2」。要檢查角色,這是更糟糕的方法,因爲您引入了自定義代碼來處理可以以標準方式輕鬆處理的內容。

還考慮另一種方法,在那裏你創建一個單獨的文件夾,把你限制網頁那裏創建一個輔助web.config包含:

... 
<system.web> 
    <authorization> 
     <allow roles="admin,members" /> 
     <deny users="*" /> 
    </authorization> 
</system.web> 

這種方式,你需要授權給所有的資源文件夾中,頁面,樣式,圖像。

相關問題