Entity 实体更新策略
在我的团队中,有一些关于更新实体数据以及如何最好地处理它的讨论。这是一个安全框架,下面是一些限制和想法Entity 实体更新策略,entity,poco,dto,updates,Entity,Poco,Dto,Updates,在我的团队中,有一些关于更新实体数据以及如何最好地处理它的讨论。这是一个安全框架,下面是一些限制和想法 DB中的每个表都有一个作为guid的PK,这是我们的多节点集群解决方案所必需的。我们的想法是,我们不想通过API在实体上向客户公开这一点,因为它可以做两件事, 向他们提供工作所需的更多信息,并向黑客提供有关系统的更多信息 支持噩梦是客户端以某种方式硬编码到此ID,如果我们需要更改PK,则会影响客户端 解决方案是使用唯一的名称和领域公开项目(如Role object)的自然键,同时保证唯一性。
谢谢 如果需要向客户端公开id,请使用自然密钥。实现起来并不容易,但这是正确的方法
你能提供更多关于这些部分更新的细节吗?我不明白/ 我的安全框架方法如下:
- 为数据库中的任何内容提供一个内部ID(标识列、序列,以及您的数据库支持的任何内容)。Hibernate speak中的“本机生成的ID列”。最终,你会需要它,而复古适合是一个很大的工作
- 如果需要将ID交给用户,请生成一个随机数,检查它是否尚未使用,将其连接到内部ID,然后将其交给用户从不分发内部ID,并且从不使用黑客可以猜到的ID
至于部分更新,只有当您有许多具有许多属性的对象时,它们才有意义。对于10个属性,我认为“在每个表上使用guid作为主键听起来像是自找麻烦。除非我真的误解了你,否则我在任何地方都没有看到这种做法。为什么不给每个用户发一个UID并使用它呢
这种方法在所有公司中最为常见。UID不是这样,从安全角度看,您在法律上没有问题。我们必须使用GUID/唯一标识符作为主键,因为我们有一个分布式数据库,并且通过使数据库群集处于活动状态,类似于oracle RAC,但这是使用MS Sql,问题是不支持标识列,因为您可以在任何节点上插入,而且该值可能不是unqiue或已经使用过,只使用GUID要简单得多。