2012-08-09 78 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