代码之家  ›  专栏  ›  技术社区  ›  Sergio Tapia

在C应用程序中处理不同用户角色的推荐方法是什么?

  •  4
  • Sergio Tapia  · 技术社区  · 15 年前

    我将为一家企业制作一个小型应用程序,用于本地扫描,并将文档存储在本地计算机或同一局域网中的计算机上的数据库中。

    我可以用username和password创建一个名为Users的表,并根据usertype ID显示一个窗体或另一个窗体。但我对经验丰富的程序员推荐的方法更感兴趣。

    编辑: 我要找的东西,将是足够安全的,但也足够扩展。

    5 回复  |  直到 15 年前
        1
  •  1
  •   Bill Martin    15 年前

    如果只是一个简单的应用程序,不要用宇宙飞船横穿马路。

    创建以下DB架构:

    用户 :用户名和哈希密码

    角色

    角色成员 :rolememembership表,其中包含userid和roleid以允许将来的多个成员身份。

    在设置角色时,给它们一个数字权重。例如:Admins=1000,Power users=500,guests=10。这样,在窗体上,您可以说,如果用户级别为500或更高,则设置full view,否则设置view only或no access。

    更好的方法是,使用IsPowerUser或IsAdmin之类的安全类将其抽象出来。

    它简单,可读性和可重用性。

        2
  •  1
  •   Luca    15 年前

    我将定义一个权限掩码,以便标识允许的操作,将其与角色组相关联,然后将用户与组相关联。权限掩码越完整,组定义中允许的粒度就越大。

    可以采用更复杂的方案,即允许每个用户的权限覆盖组权限,或使用层次权限掩码来定义能够管理组权限的主管用户。 这些模型的应用取决于所需的可伸缩性和系统的用户数量。

        3
  •  0
  •   kemiller2002    15 年前

    我可以创建一个名为Users的表 使用用户名和密码 形式,或另一种形式。

    对我来说这是个合理的选择。记住把密码散列一下。

    我还将对表单中的公共控件进行组件化,以便您可以重用公共部分。

        4
  •  0
  •   hmcclungiii    15 年前

    如果您使用的是visualstudio,我只会使用内置的成员资格提供者。那会自动处理你的数据库和一切。不需要重新发明轮子。

        5
  •  0
  •   Martin Eve    15 年前

    尽管面向ASP.NET,但我还是建议您仔细阅读本文: http://www.4guysfromrolla.com/articles/120705-1.aspx

    最后,请阅读MSDN官方文章:

    http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

    关于“角色”: http://msdn.microsoft.com/en-us/library/ff647401.aspx