我将为本地用于扫描的业务制作一个小型应用程序,并将文档存储在本地计算机上或位于同一LAN中的计算机上的数据库中。
我可以使用用户名和密码创建一个名为Users的表,并根据usertype ID显示表单或其他表单。但是我对经验丰富的程序员推荐的方法更感兴趣。
有什么建议吗?
编辑:我正在寻找足够安全的东西,但也可以扩展。
答案 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