1

SimpleMembership を使用するマルチテナント アプリがあります。システム内の各ユーザーは、1 つ以上のテナントにリンクされています。User モデル (およびテナント) に必要なフィールドを追加するだけで、Users を拡張しました。

public class User{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public virtual ICollection<Tenant> Tenants { get; set; }
}

これはうまく機能しています。しかし今は、役割をテナント固有のものにしたいと考えています。ここでは、役割の種類によっては TenantId を定義する必要があります。これは、ユーザーの問題ほど単純ではありません。次のそれぞれが影響を受けます。

役割の追加、役割の確認:

 if (!Roles.Privider.RoleExists("Moderator"))  // I now want to include TenantId here
        {
            roles.CreateRole("Moderator"); // and here
        }

プロバイダーを使用した役割の割り当て/確認:

    if (!Roles.IsUserInRole("Admin", "SystemAdministrator")) // and here
        {
            roles.AddUsersToRoles(new[] { "Admin" }, new[] { "SystemAdministrator" }); // and here
        }

役割の属性:

 [System.Web.Http.Authorize(Roles = "SystemAdministrator")]
 public class AdminApiController : BaseApiController 

User.IsInRole:

 if (User.IsInRole("Administrator"))
            {

私は ASP.NET を初めて使用するので、どこから始めればよいかわかりません。どうにかして SimpleMembership Role Provider をオーバーライドする必要がありますか?それとも、独自の Role 列やクラスなどを作成することを検討する必要がありますか? 認証に関して何かを手作業でコーディングするのは間違っていると感じるでしょう...これに関するポインタは大歓迎です。

4

1 に答える 1