多用户金融客户经理应用程序设计建议书

时间:2012-06-16 01:36:35

标签: c# database security passwords

热爱这个网站 - 在我的学习期间,它一直非常有用。刚刚完成C#介绍的四分之一,其中一个项目是设计一个财务“客户经理”应用程序,保持平衡并在提取和存款时更新它。该项目相当简单,我没有任何问题。不幸的是,我的下一季度不包括任何编程课程:(,所以我正在利用时间通过增强我的客户经理应用程序来扩展我的知识。

我想做的第一件事就是启用多个用户。到目前为止,我已经包含了一个CreateNewUser类,它禁止重复的用户名,检查特定格式要求的新密码,盐和哈希值,并使用用户名(电子邮件地址)将其保存到“帐户”表并自动增加用户身份。很简单。

所以现在我被困住了:不确定什么是最佳做法。我不认为用户应该使用与其他用户相同的表,所以我认为每个用户都应该拥有自己的表。我是“过于偏执”,还是我的共同编程安全实践的思考?事实是,没有人可能会使用这个应用程序,但我正在努力学习当我长大后我可以在现实世界中应用什么。

使用同一个表只需要使用匹配userID的查询加载DataSet,这样就不会有什么大不了的了。如果我应该使用单独的表,那么我需要在创建新用户时动态创建一个新表,并且我将使用用户ID命名该表,这将模拟现实世界中的帐号,I我假设。

无论如何,我找不到另一个涉及此问题的问题,所以我想我会问你的想法。

谢谢,

Deadeddie

2 个答案:

答案 0 :(得分:0)

这样想。如果您要保留这些表的物理示例,例如,使用笔记本。您是否愿意提供许多小笔记本或一个大笔记本?

只要您的代码被编写为仅提取正确的数据(在这种情况下,匹配的用户ID),就没有明智的安全性,因为您的所有代码都将处理对数据的访问权限。并且您的数据库和代码也具有正确的权限设置。

答案 1 :(得分:0)

  

到目前为止,我已经包含了禁止重复的CreateNewUser类   用户名,检查新密码的特定格式要求,   盐和哈希值,并将其保存到“帐户”表中   用户名(电子邮件地址)和自动递增的用户ID。简单   够了。

已经很糟糕了。它应该是一个Users表 - 处理财务信息的应用程序中的帐户具有非常具体的财务含义,您可能希望每个用户拥有多个帐户和/或用户共享一个帐户。

另外,除非你编写Powershell CmdLets(每个命令一个类是模式),否则CreateNewUser类就像走出燃烧的汽车一样糟糕。用户是一个类,某种存储库是可以的,但CREATE NEW就是类中的FUNCTION。它绝对不是一个完整的类 - 如果你转换一个类中的每个方法,你完全拙劣于面向对象的概念。

  

我不认为用户应该使用与其他用户相同的表,

再次出现了一个错误。为什么不?根据需要,在适当的字段中引用帐户和/或用户,并且没问题。

  

然后我需要在创建新用户时动态创建一个新表,

你有没有想过你在这做什么?维护明智的每一个变化都意味着编写一个程序,找出存在哪些用户表,然后修改它们。工具支持窗外。我曾经看到过这样的应用程序 - 发票管理。它有一张发票详细信息表PER INVOICE(以及每张发票的发票表,按发票编号编码),因为程序员从不了解数据库是什么。

  

我是“过于偏执”,还是我的共同编程安全实践的思考?

他们沿着“你被解雇,了解数据库的运作方式”这一行。

  

使用同一个表只需要使用匹配userID的

的查询加载DataSet

;)所以DataSet还在吗?您是否有理由按照微软过去30年中最糟糕的做法进行编程考古 - 而不是使用微软已经提供的ORM(Linq2SQL,实体框架),这将使您的应用程序变得非常多 - 啊 - 更多 - 啊 - 面向对象?

我可以建议你读一本像样的书吗?查看Scott Ambler的“构建对象应用程序”吗?不,它不是为C#编写的 - 有趣的是,良好架构的概念与99%语言无关。