我正在开发一家公司并开发一个应用程序,其中用户具有各种类型数据的CRUD。众所周知,数据可能很敏感,取决于类型。行级安全
首先,在我们公司我们有不同类型的“角色”。不同角色可以看到不同的数据,取决于角色的类型。听起来有点奇怪的是,我们必须手动过滤数据,我们在系统上进行的每个查询,具有规则的where子句,这对我们来说看起来并不合适。我们使用hibernate来执行我们的DAO。
其次,在我的应用程序中,它有点不同,但具有相同的目标。用户插入数据,他只能看到他的数据。当他想要的时候,每个查询都会有一个过滤器。我正在使用morpho的mongodb,我必须按“用户”进行过滤,但是,取决于我正在寻找的文档,用户处于不同的级别。
实施例:
- 每个基金具有用户;
- 每笔交易都有一个基金;
如果我列出我有以下文件的用户的资金:
[
{
"description": "xpto",
"user": {
"login": "Someone"
}
}
]
如果我列出我有以下文件的用户的交易:
[
{
"value": 1234.23,
"date": "2017-01-01",
"fund": {
"description": "xpto",
"user": {
"login": "Someone"
}
}
}
]
因此,在资金查询我有这样的:
datastore.find(Fund.class).filter("user.login", getUser().getLogin());
在交易:
datastore.find(Transaction.class).filter("funds.user.login", getUser().getLogin());
我做了一些研究,并找到了一些效果都不太清楚,我:
- 行级安全性;
- @Filter休眠
行级安全,是更好地数据库进行。因此,每一个查询都会完成,数据库将查看规则并过滤数据。看起来不错,但是,我该如何告诉数据库哪个用户?我系统中的每个用户都必须在数据库中授予权限?必须是数据库中的用户?
@Filter in hibernate,与i相同,但至少它在课堂上。在每个查询中,我必须说明必须过滤的内容。是我选择的最后一个。
我的目标是明白现在它是如何工作的? trello如何知道用户的许可证? Facebook知道这个帖子是你的吗?他们如何过滤数据集?每个查询过滤器都正常吗?他们是否在数据库或应用程序中执行它?