很多关于基于角色的访问的在线文章都谈到应用这样的东西来确保对控制器或操作的基于角色的访问
[Authorize(Roles = "Admin, Manager")]
public class SomeController : Controller
{
}
这一切都很好,但是现在如果我需要实现我自己的基于角色的自定义访问,其中我在 [RoleMaster] 表中有角色,并且从另一个名为 [UserRoles] 的表中的 [User] 表中分配给用户的角色。在我的代码中,我将在会话中有一个用户对象,其中现在将有一个角色列表
public class RegisteredUsers
{
//... other user properties
public List<UserRole> Roles { get; set; }
}
public class UserRole
{
public string RoleID { get; set; }
public string RoleName { get; set; }
//... other properties
}
现在,如何检查 RegisteredUsers 对象的 Roles 列表中的 UserRole.RoleName 属性是否与我使用 [Authorize(Roles = "Admin, Manager")] 分配给 Authorize 属性的任何值匹配。在某些情况下,如果角色具有管理员或经理,他们应该获得访问权限。在某些情况下,我希望他们同时拥有管理员和经理角色来获得访问权限。
此外,如果将来将新角色添加到系统中,我是否需要重新构建和重新部署我的应用程序,并重做所有授权属性?
我无法找到任何实现相同功能的明确示例,或者我可能没有正确搜索。请以任何方式帮助我。谢谢你的时间...