如何在loopback中处理访问令牌

时间:2017-01-19 08:06:27

标签: loopbackjs

这是我添加的启动脚本代码

module.exports = function enableAuthentication(server) {
  //enable authentication
  server.enableAuth();
}; 

在postman工具中,我尝试过在header中为header / logout api设置头文件中的授权(注意:我通过扩展user模型创建了User模型),

authorization LqAHkjJV4JQ7oiW6QrYPeDoJszqUXSSUi7NwTHivKV0jyNK3VSyIyFxon72NfPzZ

但我得到以下错误,

{"error":{"name":"Error","status":500,"message":"could not find accessToken","stack":"Error: could not find accessToken\n at D:\\zauth\\node_modules\\loopback\\common\\models\\user.js:302:12\n at D:\\zauth\\node_modules\\loopback-datasource-juggler\\lib\\dao.js:2056:62\n at D:\\zauth\\node_modules\\loopback-datasource-juggler\\lib\\dao.js:1984:11\n at D:\\zauth\\node_modules\\loopback-datasource-juggler\\node_modules\\async\\lib\\async.js:396:17\n at async.each (D:\\zauth\\node_modules\\loopback-datasource-juggler\\node_modules\\async\\lib\\async.js:153:20)\n at _asyncMap (D:\\zauth\\node_modules\\loopback-datasource-juggler\\node_modules\\async\\lib\\async.js:390:13)\n at Object.map (D:\\zauth\\node_modules\\loopback-datasource-juggler\\node_modules\\async\\lib\\async.js:361:23)\n at allCb (D:\\zauth\\node_modules\\loopback-datasource-juggler\\lib\\dao.js:1912:15)\n at D:\\zauth\\node_modules\\loopback-datasource-juggler\\lib\\connectors\\memory.js:472:7\n at _combinedTickCallback (internal/process/next_tick.js:67:7)\n at process._tickDomainCallback (internal/process/next_tick.js:122:9)"}}

我也试过了,

http://localhost:3000/api/users/logout?access_token=LqAHkjJV4JQ7oiW6QrYPeDoJszqUXSSUi7NwTHivKV0jyNK3VSyIyFxon72NfPzZ

这不是问题,同样的错误

我必须知道如何传递accessstoken @ kamal0808

2 个答案:

答案 0 :(得分:0)

内置用户模型的默认ACL不允许列出用户:

您可以在此处查看完整配置: https://loopback.io/doc/en/lb3/Managing-users.html#default-access-controls

  

以上ACL拒绝所有人的操作,然后有选择地允许:

     
      
  • 任何人都可以创建新用户(用户实例)。
  •   
  • 任何人都可以登录,注销,确认自己的身份,并重置自己的密码。
  •   
  • 用户在自己的用户记录(实例)上执行deleteById,findById和updateAttributes。
  •   

您无法直接修改内置用户模型,因此需要对其进行扩展。

成功登录后如何传递访问令牌? 您有两种方法:

您应该使用HTTP标头,因为使用查询参数不够安全(它们不会被SSL协议加密,并且可以保留在浏览器或其他客户端历史记录中)。

检查文档的更多信息:https://loopback.io/doc/en/lb3/Making-authenticated-requests.html

答案 1 :(得分:0)

您需要为应用程序的每个API请求设置ACL(访问控制级别)。

这里是ACL的doc链接: https://loopback.io/doc/en/lb2/Controlling-data-access.html

对于您的代码,您需要在 Users.json 文件的ACL数组中获取以下对象:

{
   "accessType": "EXECUTE"
   "principalType": "ROLE",
   "principalId": "$authenticated",
   "permission": "ALLOW",
   "property": "find"
}

$ authenticated 是指任何可以登录的人。您也可以为用户创建自定义角色。