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

时间:2010-06-07 17:05:30

标签: c# .net winforms user-roles

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

我可以使用用户名和密码创建一个名为Users的表,并根据usertype ID显示表单或其他表单。但是我对经验丰富的程序员推荐的方法更感兴趣。

有什么建议吗?

编辑:我正在寻找足够安全的东西,但也可以扩展。

5 个答案:

答案 0 :(得分:1)

即使我不能认为自己“经验丰富”,我也会给出答案,因为我在这几周内遇到了同样的问题。

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

通过这种方式,多个用户有一个权限定义,这比使用每个用户类型定义角色更好,因为可以修改和扩展权限掩码。

可能有更复杂的方案,这可能允许每个用户权限覆盖组权限或层次结构权限掩码,以便定义能够管理组权限的超级用户用户。 这些模型的应用取决于所需的可扩展性和系统用户的数量。

答案 1 :(得分:1)

如果它只是一个简单的应用程序,请不要使用太空船过马路。

创建以下数据库架构:

用户:用户名和散列密码

角色:RoleName,RoleID,RoleStrength(int)

角色成员:包含用户ID和角色ID的Rolemembership表,以便将来拥有多个成员资格。

设置角色时,请为其提供数字权重。即:Admins = 1000,Power-users = 500,guests = 10.这样,在表单上,​​您可以说,如果用户级别为500或以上,则设置完整视图,否则,仅查看或不访问。

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

它简单易读,可重复使用。

答案 2 :(得分:0)

  

我可以创建一个名为Users的表   用户名和密码   根据usertype ID显示一个   形式或其他形式。

听起来像是一种合理的方式来找我。只记得哈希密码。

我还要对表单中的常用控件进行组件化,这样您就可以重用公共部分。

答案 3 :(得分:0)

如果您使用的是Visual Studio,我只会使用内置的成员资格提供程序。这将自动处理您的数据库和一切。无需重新发明轮子。

答案 4 :(得分:0)

虽然面向ASP.NET,但我完全建议您查看这篇文章:http://www.4guysfromrolla.com/articles/120705-1.aspx

您可以使用内置的Membership和Roles对象(甚至在桌面应用程序中)来定义您自己的权限模式。使用此功能可以轻松地为用户(和角色)表创建自己的数据库条目,同时还可以为您处理密码哈希(导致更安全的应用程序)。

最后,您可能需要阅读官方MSDN文章:

关于“会员资格”:http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

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