1

独自の ApplicationUser、ApplicationUserStore (IUserStore および IUserPasswordStore を実装)、および ApplicationUserManager (UserManager を拡張) を使用する単純な MVC 6 アプリケーションの作成に成功しました。ログインは完全に機能するようになりました。ここで、次のようなコントローラーで注釈をサポートするようにプロジェクトを拡張したいと考えています。

[Authorize(Roles = "TestRole")]
public IActionResult Trips()
{
  ...
}

したがって、独自の ApplicationRole、ApplicationRoleManager、ApplicationRoleStore も作成し、スタートアップに登録しました。

    services.AddIdentity<ApplicationUser, ApplicationRole>(config =>
    {
        config.User.RequireUniqueEmail = true;
        config.Password.RequiredLength = 8;
        config.Cookies.ApplicationCookie.LoginPath = "/Auth/Login";
        config.Cookies.ApplicationCookie.AutomaticAuthenticate = true;
    }).AddUserStore<ApplicationUserStore<ApplicationUser>>()
    .AddRoleStore<ApplicationRoleStore<ApplicationRole>>()
    .AddUserManager<ApplicationUserManager>()
    .AddRoleManager<ApplicationRoleManager>(); 

私の問題は、注釈がまったく機能しないことです。実際、ApplicationRoleStore の Roles メソッド (IQueryableRoleStore から) が起動されることを期待していました。

拘束力のある場所を見逃していますか、それともアイデンティティ/役割の概念について完全に間違った考えを持っていますか?

4

1 に答える 1

2

認可属性:

[Authorize(Roles = "TestRole")]
public IActionResult Trips()
{
  ...
}

アイデンティティーを呼び出すことはありません。現在のユーザーがロール「TestRole」にあるかどうかのみを確認し、ユーザーがロールにある場合にのみアクセスを許可します。これは、ロール Cookie に対するチェックになります。

ロール メンバーシップを管理するための独自の UI を構築し、ユーザーの Cookie にそのロールを取得するためにロールからユーザーを削除する必要があります。

さらにアイデアが必要な場合は、ここにロール管理が実装されたプロジェクトと、エンティティ フレームワークのないアイデンティティがあります。

于 2015-12-09T15:57:05.880 に答える