我正在为远程智能设备创建一个警报跟踪管理系统。使用nodejs和mongodb。这个想法是这样的,当设备有警报我希望有权限的用户在登录后可以看到警报错误(或错误历史)。假设我有三种类型的用户,第一种类型只能跟踪一种设备组,第二组和第三组所有设备。对于演示版本,我打算在我的mongodb中创建一个用户,并添加具有3种类型的设备组的数组,并根据所拥有的访问权限为每个设备组分配true。我已经有登录系统,但是我想要一些建议如何检查用户是否可以访问组1,然后在登录到特定路线等后可以重定向。我认为创建一个以某种方式检查的功能'如果(用户名ofOfgroup1为true)然后重定向到nameOfgroup1视图'但不知道如何为这种情况编写代码。我的用户架构:
@RequestMapping(value = "api/getString", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody
GetResult<String> getString() {
String str= UUID.randomUUID().toString();
return new GetResult<>(str);
}
答案 0 :(得分:0)
存储用户应该有权访问的组ID数组会更简单。这样,您将来可以轻松添加更多组,并且检查给定组也很容易。
例如,如果用户在DB中的文档类似于:
{ "username" : "name", "groups" : [ 0, 2 ] }
然后很容易检查他有权访问哪些组,但也可以检查特定组:
function check(user, group) {
return user.groups.indexOf(group) > -1;
}
此外,搜索有权访问数据库中给定组的用户也很容易:
db.users.find({groups:2});
您可以使用名称或ObjectIds或任何方便的方式代替数字。