gpt4 book ai didi

c# - ASP.NET Identity - 基于公司的过滤角色

转载 作者:行者123 更新时间:2023-11-30 18:24:51 26 4
gpt4 key购买 nike

我有一个 Web 应用程序,它保存多个公司的数据(如 Multi-Tenancy ),但一个用户可以访问多个公司(与 Multi-Tenancy 的不同点)。此外,用户可能对不同的公司具有不同的访问权限。

例如:用户 A 对公司 A 具有管理员权限,对公司 B 仅具有基本权限

为了支持此功能,我已将公司添加到 AspNetUserRoles 表中。我想要做的是根据为登录用户选择的公司过滤身份框架返回的角色。

应用程序使用 UserManager 类中的 FindByNameAsync 方法返回用户对象,但我认为我的切入点在堆栈中更靠后。

实现此功能的最佳方式是什么?最佳结合点在哪里?

如有任何帮助,我们将不胜感激。

最佳答案

您可以通过以下方式实现此功能:

  1. 为一家公司添加多个角色,例如aspnet_Roles 表中的 CompanyA_Admin、CompanyA_Basic、CompanyB_Admin、CompanyB_Basic
  2. 然后通过 System.Web.Security.Roles.GetRolesForUser() 进一步获取给定用户的所有角色
  3. 为用户获取所有公司:

    string[] CompaniesForUser()
    {

    //Change to commented version for production
    string[] roles = new string[] { "CompanyA_Admin", "CompanyB_Admin", "CompanyA_Basic", "CompanyB_Basic" }; //System.Web.Security.Roles.GetRolesForUser();
    string[] companies = new string[100];
    int index = 0;

    foreach(string role in roles)
    {
    string cName = role.Split('_')[0];

    //Only add new companies
    if (!companies.Contains(cName))
    {
    companies[index] = cName;

    //Testing
    Response.Write("Index : " + index + " - " + cName + "<br>");

    index++;
    }
    }

    return companies;

关于c# - ASP.NET Identity - 基于公司的过滤角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30769520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com