Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET成员资格和角色_Asp.net_Asp.net Membership_Asp.net Roles - Fatal编程技术网

ASP.NET成员资格和角色

ASP.NET成员资格和角色,asp.net,asp.net-membership,asp.net-roles,Asp.net,Asp.net Membership,Asp.net Roles,我正在尝试在我的项目中使用ASP.NET成员身份和角色,并且已经阅读了不同的文章、帖子等,以检查使用ASP.NET是否比从头开始手工编写整个功能更好。然而,经过几天的搜索,我还没有弄清楚下面的场景是否可能 我的应用程序的用户有角色,他们也属于一家公司。因此,我需要在用户登录后立即检索该用户的公司id,因为我需要在不同页面上显示该用户的公司特定数据 角色应该分类。(即应用程序管理员、公司管理员、公司用户(经理、前台等)。因此,当公司管理员向用户分配角色时,他/她只能分配经理、前台等,而不能分配应用

我正在尝试在我的项目中使用ASP.NET成员身份和角色,并且已经阅读了不同的文章、帖子等,以检查使用ASP.NET是否比从头开始手工编写整个功能更好。然而,经过几天的搜索,我还没有弄清楚下面的场景是否可能

  • 我的应用程序的用户有角色,他们也属于一家公司。因此,我需要在用户登录后立即检索该用户的公司id,因为我需要在不同页面上显示该用户的公司特定数据
  • 角色应该分类。(即应用程序管理员、公司管理员、公司用户(经理、前台等)。因此,当公司管理员向用户分配角色时,他/她只能分配经理、前台等,而不能分配应用程序管理员。(我曾考虑在Roles表中添加另一个字段,以便对角色进行分类,但我不知道这样做是好事还是坏事,以及它将如何修改成员资格控件的行为)

  • 这不完全是一个问题,但我正在寻求建议,在这种情况下,我是否应该申请ASP.NET成员资格

    不建议您根据需要从头开始编写。您可以使用

    1-您可以将用户信息保存在其配置文件(公司、名称等)中,或创建另一个表以将用户映射到公司

    2-对于第二个问题,您可以创建一个单独的类或方法来处理访问

    如下所示:

    public IList<string> GetRolesUserCanAssign(string userRole)
    {
        var roles  = new List<string>();
    
        if(userRole == "Manager" || userRole == "FrontDesk")
        {
            return roles;
        }
    
        roles.AddRange(new[]{"Manager" , "FrontDesk"});
    
        if(userRole == "CompanyAdmin")
        {
            return roles;
        }
    
        if(userRole == "ApplicationAdmin")
        {
            roles.Add("CompanyAdmin");
        }
    
        return roles;
    }
    
    public IList GetRolesUserCanAssign(字符串userRole)
    {
    变量角色=新列表();
    if(userRole==“经理”| | userRole==“前台”)
    {
    返回角色;
    }
    roles.AddRange(新[]{“经理”,“前台”});
    if(userRole==“CompanyAdmin”)
    {
    返回角色;
    }
    if(userRole==“ApplicationAdmin”)
    {
    角色。添加(“公司管理员”);
    }
    返回角色;
    }
    
    对我来说似乎是一个公平的解决方案。谢谢。虽然,正如你所说,我可以使用另一个表来映射用户,但如果我将公司id保留在Profile表中并将其设置为外键,那就可以了。@ZedBee:不客气,这些只是你可以做的示例。