【问题标题】:Loopback - How to implement different type of usersLoopback - 如何实现不同类型的用户
【发布时间】:2016-05-10 01:56:56
【问题描述】:

我正在为一所学校开发一个应用程序,我决定使用 Loopback 开发我的 Web Api。我的应用有两种用户:教师和学生。我注意到 Loopback 默认为我提供了一个用户模型,而且似乎无法更改。我该如何实施?制作另外 2 个教师和学生表并将它们与用户表相关联?如果我这样做,我可以设置安全规则然后使用这个表吗?我该怎么做?

非常感谢

【问题讨论】:

  • 请注意,您无法更改内置模型(例如用户),但您可以extend它们,这是一个非常常见的场景。话虽如此,我会选择roles,就像@Medet 提议的那样,因为作为教师/学生确实是用户的角色。他们都有用户名、电子邮件、密码等。他们只是有不同的能力。至少第一眼看上去是这样。这始终取决于您的情况。

标签: node.js rest loopbackjs strongloop


【解决方案1】:

除非loopback:user 之间存在巨大差异,否则无需创建不同的用户表,因为环回提供了很多内置帮助程序(电子邮件验证、密码恢复、密码强度、唯一用户名)。在您的情况下,您最好使用角色,docs

//create user
User.create({
    username: 'Obama', 
    email: 'obama@doe.com', 
    password: 'opensesame'
}, function(err, user) {
    if (err) return cb(err);

    //create the teacher role
    Role.create({
      name: 'teacher'
    }, function(err, role) {
      if (err) cb(err);

      //make obama a teacher
      role.principals.create({
        principalType: RoleMapping.USER,
        principalId: user.id //obama id
      }, function(err, principal) {
        cb(err);
      });
    });
  });

那么,如果您希望某些路线(比如说课程)只有教师可以访问,那么将配置添加到models/lesson.json 模型

{
  "accessType": "EXECUTE",
  "principalType": "ROLE",
  "principalId": "teacher", // <== role
  "permission": "ALLOW",
  "property": "find" 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2011-07-08
    • 1970-01-01
    相关资源
    最近更新 更多