尝试登录时回送未经授权的请求

时间:2015-01-13 10:49:15

标签: express loopbackjs strongloop

我创建了一个自定义用户模型,该模型继承了内置用户模型。然后我添加了一个创建默认用户的启动脚本。

 User.create([{
   username: 'admin',
   email: 'email@email.com',
   password: 'admin'
}], on_usersCreated);

这将在monogdb数据库中创建一个文档。但是,当我尝试登录时,会发送401未经授权的请求。

我试图找到问题的根源,似乎环回不能在数据库中鳍这样的用户。更具体地说,在node_modules / loopback / common / models / user中有这样的:

self.findOne({where: query}, function(err, user) {
  var defaultError = new Error('login failed');
  defaultError.statusCode = 401;
  ....

其中

query = { email: "email@email.com" }

但问题是它无法在数据库中找到具有该电子邮件的用户,尽管它确实存在。

这是user.json文件

{
  "name": "user",
  "base": "User",
  "idInjection": true,
  "properties": {},
  "validations": [],
  "relations": {},
  "acls": [
   {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "DENY"
   },
   {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "admin",
      "permission": "ALLOW"
   }
 ],
 "methods": []
}

2 个答案:

答案 0 :(得分:1)

我设法解决了这个问题。正如@superkhau强调的那样,您应该使用自定义用户模型来创建默认用户。

此外,我不得不公开用户模型API并隐藏内置用户API;所以在model-config.js

 ...
 "User": {
    "dataSource": "db",
    "public": false
 },

 "user": {
   "dataSource": "db",
   "public": true
 },
...

答案 1 :(得分:0)

您可能有两个集合:用户和用户。在您的模型中,用户从用户扩展。您使用哪种模型创建用户记录?