如何在Asp.Net成员资格中检查登录用户的多个角色?

时间:2012-08-09 06:31:11

标签: c# asp.net asp.net-membership roles

我在我的代码隐藏文件中以编程方式绑定了转发器。我也在检查我的页面中的角色,如下所示,根据我正在绑定我的转发器控件,如此;

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个角色,我是管理员,作者,编辑,用户。但是,我有一个用户i-e admin ,它属于所有这些角色。 我的逻辑问题是,当我以管理员用户身份登录(属于所有4个角色)时,第一个条件和第二个条件都失败,最后一个条件被执行。 所以,我想为该用户执行我的第一个条件,该用户必须在我的所有角色中担任4个角色。 否则我会检查个别角色。 任何有关这方面的帮助都会提前得到赞赏。

2 个答案:

答案 0 :(得分: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)
    {
    }

答案 1 :(得分:0)

您可以执行以下操作:

var userRoles = Roles.GetRolesForUser(userName);
var rolesNotAssigned = Roles.GetAllRoles().Except(userRoles);
if (rolesNotAssigned.Length == 0)
{
    // user is in all roles   
}
相关问题