【问题标题】:ASP.NET Membership and RolesASP.NET 成员资格和角色
【发布时间】:2013-02-09 12:53:19
【问题描述】:

我正在尝试为我的项目使用 ASP.NET 成员资格和角色,并且一直在阅读不同的文章、帖子和 SO,以检查使用它是否对我来说是一个更好的选择,而不是从头开始手动编写整个功能。然而,经过几天的搜索,我还没有弄清楚它是否可能适用于以下场景。

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

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

【问题讨论】:

    标签: asp.net asp.net-membership asp.net-roles


    【解决方案1】:

    不建议从头开始写作。您可以使用asp.net membership 处理您的要求。

    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;
    }
    

    【讨论】:

    • 对我来说似乎是一个公平的解决方案。谢谢。虽然,正如你所说,我可以使用另一个表来映射用户,但如果我将公司 ID 保留在 Profile 表中并使其成为外键,那会很好。
    • @ZedBee:欢迎您,这些只是您可以做的示例。
    猜你喜欢
    • 1970-01-01
    • 2011-02-03
    • 2010-09-29
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多