Spring域对象中的字段级权限。查看和编辑基于权限的对象过滤

时间:2016-12-23 08:58:22

标签: mysql spring mongodb spring-security shiro

我正在为这个问题寻找一个基于弹簧的解决方案。我已经粗略地解决了这个问题,但寻找更好的解决方案。

我有一个客户端服务器架构应用程序。     根据用户权限,我能够:       获取不允许写入的登录用户的字段列表。       获取不允许他阅读的登录用户的字段列表。

现在,我如何以有效的方式验证要写入数据库的对象是否符合用户权限。我可以迭代字段,检查它的值是否与存储在db中的值不同并相应地拒绝。有没有有效的方法?

示例:

存储在MongoDB中的一个域实体“帐户”。

class Account {
 String name;
 String email;
 String mobile;
}

要返回给客户的相应DTO对象

class AccountDto {
 String name;
 String email;
 String mobile;
}

两个用户 - >用户A,用户B

方案:     用户A可以编辑[名称]但不能编辑电子邮件,移动设备。     用户A可以查看[姓名,电子邮件]但不能移动。

如何设计仅返回允许他查看的字段。我不想根据每个用户的许可创建大量的DTO。

如何根据分配给登录用户的权限编写代码以检查要写入数据库的对象是否有效。我不想迭代字段并检查字段权限然后丢弃。昂贵的操作。

我的解决方案:每当用户打算写入db时,我都可以获取现有记录,与他要写入的记录进行比较,如果没有该权限,则更改字段值。但这会增加数据库读取成本,而不是通用解决方案。

0 个答案:

没有答案