2012-08-09 74 views
1

我有我的代碼後面的文件編程綁定中繼器。我也正在檢查我的頁面中的角色,如下所示,並根據我的約束我的轉發器控制像這樣;如何檢查Asp.Net成員中的多個角色的登錄用戶?

if (Page.User.IsInRole("Admin")) 
{ 
    repeaterArticlesList.DataSource = ArticleAccess.GetArticlesWithNoPaginate(); 
    repeaterArticlesList.DataBind(); 
} 
else if(Page.User.IsInRole("Editor")) 
{ 
    repeaterArticlesList.DataSource = ArticleAccess.GetArticlesWithNoPaginate(); 
    repeaterArticlesList.DataBind(); 
} 
else 
{ 
    string userName = Page.User.Identity.Name.ToString(); 
    repeaterArticlesList.DataSource = ArticleAccess.GetArticlesWithNoPaginateWithUsername(userName); 
    repeaterArticlesList.DataBind(); 
} 

我共有4個角色我-E 管理員,作者,編輯器,用戶。但是,我有一個用戶i-e admin屬於所有這些角色。 我的邏輯問題是當我作爲管理員用戶(屬於所有4個角色)登錄時,第一個條件和第二個條件都失敗,最後一個條件執行。 所以,我想執行我的第一個條件,該用戶必須在我所有的角色4角色。 否則,我會檢查個人角色。 任何有關這方面的幫助是預先讚賞。

回答

0

你可以這樣做:

var userRoles = Roles.GetRolesForUser(userName); 
var rolesNotAssigned = Roles.GetAllRoles().Except(userRoles); 
if (rolesNotAssigned.Length == 0) 
{ 
    // user is in all roles 
} 
0
if (Page.User.IsInRole("Admin") && Page.User.IsInRole("Editor") && Page.User.IsInRole("Author") && Page.User.IsInRole("User")) 
{ 
    // 
} 
    //Only for users that are in all roles 
    if (Roles.GetAllRoles().Length == Roles.GetRolesForUser().Length) 
    { 
    } 
+0

這不是一個專業的方式和 – 2012-08-09 06:57:18

+0

是新的代碼行執行不執行? – 2012-08-09 07:52:34