我是回环的新手。因此,作为学习过程的一部分,开始创建示例API。还将用户模型扩展为Customer,将AccessToken扩展为CustomerAccessToken。但是问题在于,当我们尝试登录已经使用POST请求发送的数据时,不会生成访问令牌。
使用凭据登录时的响应正文:
{
"id": "oiMDjErGGVkeSMtnt1SfHzGuERZf6OCId5FUulvir6A04htUbIV656FOBlXn9vDS",
"ttl": 1209600,
"created": "2019-05-09T09:41:05.184Z",
"userId": "5cd3f59594d45186b411bb02"
}
未生成accessToken。我已经删除了内置的User和AccessToken模型,并使用了扩展模型。
model-config.json
{
"CustomerAccessToken": {
"dataSource": "db",
"public": false
}
"Customer": {
"dataSource": "db",
"public": true
}
}
customer.json
"relations": {
"accessTokens": {
"type": "hasMany",
"model": "CustomerAccessToken",
"foreignKey": "userId",
"options": {
"disableInclude": true
}
}
}
customerAccessToken.json
{
"name": "CustomerAccessToken",
"base": "AccessToken",
"properties": {},
"validations": [],
"relations": {
"user": {
"type": "belongsTo",
"model": "Customer",
"foreignKey": "userId"
}
},
"acls": [],
"methods": {}
}
另一个查询:当我们尝试扩展User&AccessToken模型或我是否需要在customer.js文件中编写登录功能以使其起作用时,登录功能才能工作。
任何帮助将不胜感激。
答案 0 :(得分:0)
尝试使用DEBUG变量来获取有关该错误的更多详细信息。来自回送根调用
export DEBUG=loopback:security:access-context
npm start
以调试模式运行服务器。然后,您可以检查到底发生了什么-调用了哪种方法以及为什么您没有访问权限。 可能是ACL设置:默认情况下,您无法在环回中获取用户数据,因此您可能需要将ACL规则添加到Customer实体。我建议为此使用loopback-cli-不太容易出错。然后,选择一个要在其中添加新规则的模型,并按照分步说明进行操作。您可以阅读有关ACL here
的更多信息答案 1 :(得分:0)
除非要实现多个用户模型,否则不要使用CustomerAccessToken
。
这是最适合我的配置:
model-config.json
{
"User": {
"dataSource": "mysql",
"public": false
},
"AccessToken": {
"dataSource": "mysql",
"public": false,
"relations": {
"Customer": {
"type": "belongsTo",
"model": "Customer",
"foreignKey": "userId"
}
}
},
"Customer": {
"dataSource": "mysql",
"public": true
}
}
server.js
app.use(loopback.token({
model: app.models.accessToken,
currentUserLiteral: 'me'
}))
客户模型必须扩展用户模型:
customer.json
{
"name": "Customer",
"plural": "customers",
"base": "User"
}
答案 2 :(得分:0)
除了Antonio Trapanis响应之外。如果要使用自己的AccessToken模型必须在server.js
app.use(loopback.token({
model: app.models.CustomerAccessToken,
}));
答案 3 :(得分:0)
我遵循了本教程。 https://youtu.be/Jx39u8IssRg 通过用户控制器以“用户”身份登录时,我在响应正文中收到了 Token 。 我可以通过在标头中将“ token ”作为“ Bearer Token”传递到待办事项模型的终点。我使用“ 邮递员”达到了待办事项的终点 (我无法将收到的令牌插入/附加到loopback4应用程序的待办事项中)