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 列やクラスなどを作成することを検討する必要がありますか? 認証に関して何かを手作業でコーディングするのは間違っていると感じるでしょう...これに関するポインタは大歓迎です。