2

MVC 4 アプリケーションで Authorize 属性を使用しようとしていますが、

[Authorize(Roles = "Administrator, Super-User")]
public JsonResult Remove(int id)
{
      .
      .
      .
}

「管理者」ロールと「スーパーユーザー」ロールのみがメソッドの実行を許可されていることはわかっていますがRemove、ロールをアプリケーションの実際のユーザーに設定するにはどうすればよいですか?

4

3 に答える 3

1

答えは - どういうわけか、それHttpContext.Current.Userが設定され、IsInRoleメソッドは true を返します。

これを行う最も簡単な方法は、組み込みの認証/承認メカニズムの 1 つ (フォーム認証または Windows 認証) に従うことです。

前者では、サーバーによって発行された有効なフォーム Cookie が要求に含まれている必要があります。後者では、リクエスト プリンシパルがドメイン コントローラで認証できる必要があります。

ただし、カスタム認証モジュールを自由に実装できます。

これを学び始めたばかりの場合は、おそらくフォーム認証を使用したいと思うでしょう。ユーザーがログインできるようにし、Cookie を発行すると、Cookie は後続の ajax リクエストによって自動的に実行されます (サーバー コードが JavaScript クライアント側の ajax 呼び出し内から呼び出されると仮定します)。

于 2013-07-18T17:12:45.087 に答える
0

ロール プロバイダーを使用して、ユーザーをロールに追加できます。

var rolesProvider = (SimpleRoleProvider)Roles.Provider;

ロールが存在することを確認します

if (!rolesProvider.RoleExists("SuperUser"))
{
    rolesProvider.CreateRole("SuperUser");
}

ユーザーがすでにロールに含まれているかどうかを確認し、そうでない場合は、ユーザーをロールに追加します

if (! rolesProvider.IsUserInRole("JohnSmith", "SuperUser"))
{
    rolesProvider.AddUsersToRoles(new[] {"JohnSmith"}, new[] {"SuperUser"});
}
于 2013-07-18T21:56:38.717 に答える