1

コードビハインドファイルにプログラムでリピーターをバインドしています。また、以下のように自分のページで役割を確認しています。それに従って、このようにリピーター コントロールをバインドしています。

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();
}

Admin、Author、Editor、User の合計 4 つの役割があります。ただし、これらすべてのロールに属する管理者というユーザーが 1 人います。私のロジックの問題は、管理者ユーザー (4 つのロールすべてに属する) としてログインすると、最初の条件と 2 番目の条件の両方が失敗し、最後の条件が実行されることです。したがって、そのユーザーの最初の条件を実行したいと思います。これは、4 つのロールのすべてのロールに含まれている必要があります。 それ以外の場合は、個々の役割を確認します。これに関するヘルプは事前に感謝します。

4

2 に答える 2

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)
    {
    }
于 2012-08-09T06:48:08.443 に答える
0

次のようなことができます。

var userRoles = Roles.GetRolesForUser(userName);
var rolesNotAssigned = Roles.GetAllRoles().Except(userRoles);
if (rolesNotAssigned.Length == 0)
{
    // user is in all roles   
}
于 2012-08-09T08:00:44.370 に答える