我需要为多用户应用程序创建架构,而我需要使用MongoDB,Express,AngularJS和NodeJS进行开发。我有4种类型的用户在该应用程序,GUEST
,REGISTERED_USER
,SUBSCRIBER
,ADMIN
。一旦用户注册了应用程序,我就需要根据特定用户的角色来显示表单和信息。
有人可以给我一些关于如何为用户的不同角色处理模式的想法,因为我以后可以将其用于角色和访问级别功能吗?
例如,以下registeredUserSchema
是常见的REGISTERED_USER
,SUBSCRIBER
,ADMIN
用户:
var registeredUserSchema = mongoose.Schema({
userId: String,
fullName: String ,
email: String,
password: String,
created: { type: Date, default: Date.now },
roles: [String]
});
但是,然后我需要从具有SUBSCRIBER
角色的用户那里询问很多信息,因此,一旦他注册了该应用程序,我想显示比用户更多的额外信息,以显示他要填写的辅助信息。只是REGISTERED_USER
。
有人可以帮我吗?
编辑:更多解释
例如,aREGISTERED_USER
将具有userId
,但具有SUBSCRIBER
角色的用户将具有subscriberId
。因此,我需要决定如何构造该数据,因为存在所有用户都通用的数据,然后每个用户根据其角色都有不同的数据。我需要有关选择结构数据的策略方面的帮助。例如,在Java Persistence API中,我们有各种继承策略来构造关系数据库表中的数据。
我正在为这个部分使用这个集合:
var permissions_schema = new mongoose.Schema({
name : String,
title : String
}); // this are mostly static data
var roles_schema = new mongoose.Schema({
name : String,
title : String,
_permissions : Array
});// _permissions is an array that contain permissions _id
var contacts_schema = new mongoose.Schema({
mobile : String,
password : String,
first_name : String,
last_name : String,
_role : Number,
_enabled : Boolean,
_deleted : Boolean,
_verify_code : Number,
_groups_id : Array,
_service_id : String
}); // and at last _role is _id of the role which this user owns.
借助这些集合,您可以轻松管理用户。我希望这些对您有好主意。
更新:更加灵活的架构可以在联系人对象中包含一个role_id数组,并且联系人可以具有多个角色,并且他/她的权限是所有角色权限的合并。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句