我有一个使用 SimpleMembership 的多租户应用程序。我系统中的每个用户都链接到一个或多个租户。我只是通过将必填字段添加到用户模型(和租户)来扩展用户:
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
用户.IsInRole:
if (User.IsInRole("Administrator"))
{
我对 ASP.NET 很陌生,所以我不确定从哪里开始。我应该以某种方式覆盖 SimpleMembership Role Provider,还是应该考虑编写自己的 Role 列、类等?围绕身份验证手动编码任何内容都会感觉不对......任何关于此的指针将不胜感激。