web-dev-qa-db-ja.com

「User.IsInRole」の複数の役割

ページに3つの役割があるので、2つの役割にリンクするためのアクセス権を取得したいと考えています。

私はこのようなものを試します

@if(User.IsInRole("Admin,User")) 
{
 //my code
}

またはこれ

@if (User.IsInRole("Admin") && User.IsInRole("User"))

{
 //my code
}

誰の作品でもありません、私が何とか働いたのはこれだけです:

 @if (User.IsInRole("Admin")

しかし、この最後の1つは1つの役割のみです。どうすればよいですか。

9
Joan

誰も仕事をしていません。私が何とか仕事をしたのはこれだけです。

これは、メソッドIsInRoleの機能を考えると妥当です。

現在ログオンしているユーザーが指定されたロールに属しているかどうかを示す値を取得します。 APIはASP.NET要求スレッドのコンテキスト内でのみ呼び出されることを意図しており、その認可されたユースケースではスレッドセーフです。

つまり、ユーザーは管理者の役割を持っている可能性がある(そうUserIsInRole("Admin")はtrueを返す)が、ユーザーの役割を持っている可能性がありますnotUserIsInRole("User")はfalseを返します)。したがって、User.IsInRole("Admin") && User.IsInRole("User")falseと評価されます。

あなたが必要とするかもしれないのはこれです:

// If the user's role is either admin or user then do something
@if (User.IsInRole("Admin") || User.IsInRole("User"))
{
    //my code
}
16
Christos