我仍在深入研究环回,请帮忙。我有以下模型:admin
=>扩展了内置User
模型,student
=>扩展了内置User
模型和其他COZ模型。>
简述:
我不希望经过身份验证的实例student
能够访问端点Student GET /students
。我不希望Student
能够访问有关所有Student
的信息。因此,我提出了admin,它应该能够通过Role的实现访问端点GET / students。我希望管理员能够访问所有端点
站立:
在script.js中
module.exports = function(app) {
const User = app.models.admin;
const Role = app.models.Role;
const RoleMapping = app.models.RoleMapping;
Role.find({ name: 'admin' }, function(err, results) {
if (err) {
throw err;
}
if (results.length < 1) {
// now Role creation...
User.create([{name:'Felix Olonde',username:"felix",email: 'felix@gmail.com', password: 'felix123',phone_number:3127287656,dob:1988-03-04,state: 'LA'
}
], function(err, users) {
if (err) throw err;
console.log('Created user:', users);
//create the admin role
Role.create({
name: 'admin'
}, function(err, role) {
if (err) throw err;
console.log('Created role:', role);
role.principals.create({
principalType: RoleMapping.USER,
principalId: users[0].id
}, function(err, principal) {
if (err) throw err;
console.log('Created principal:', principal);
});
});
});
}
});
}
student.json
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$owner",//student to access their own information
"permission": "ALLOW"
},
{
"accessType": "EXECUTE",
"principalType": "ROLE",
"principalId": "admin",
"permission": "ALLOW",
"property": "find"
}
],
admin.json
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$owner",
"permission": "ALLOW"
}
],
问题
登录成功在数据库中创建的管理员后(我使用在mLab中托管的mongo),当我尝试使用浏览器让所有学生都得到401 ..“需要授权”
目标
我只希望管理员能够真正完全控制API端点。即管理员应该能够吸引所有学生等。
答案 0 :(得分:0)
在大多数情况下,良好的设计是让单个类成员(或客户或您喜欢的任何人)扩展内置用户模型。
基本上,您注册两个成员,创建角色admin,并提升两个成员之一的admin。这里的一个例子: Multiple users roles loopback
student.json
中的acl是正确的,并且可以使用。
如果您确实希望扩展内置用户的模型不同,则在官方文档中对具有多个用户模型的访问控制进行了很好的解释: