如何在Loopback中更好地获取当前用户ID

时间:2016-11-04 14:06:39

标签: javascript loopbackjs

由于loopback.getCurrentContext()存在长期不稳定问题并且目前已被弃用,如何确保当用户通过API端点执行某些操作时,我知道如何识别他?

可能我可以在请求有效负载中发送令牌ID并检查它吗?如果用户假货怎么办? Github问题页面上那些hacky解决方案的替代方案是什么?

1 个答案:

答案 0 :(得分:0)

查看https://docs.strongloop.com/display/public/LB/Making+authenticated+requests

总之,一旦您在其中记录了用户,就应该在响应中返回一个AccessToken。 然后,您可以在标题或查询字符串中使用它来证明您是登录用户:

# Authorization Header
curl -X GET -H "Authorization: $ACCESS_TOKEN" \
http://localhost:3000/api/widgets

# Query Parameter
curl -X GET http://localhost:3000/api/widgets?access_token=$ACCESS_TOKEN

这不容易被伪造,因为在每个请求上检查访问令牌以确保它是当前有效的。

完成此操作后,您可以访问accessToken(取自https://github.com/strongloop/loopback/issues/569#issuecomment-60924099,除非将用户附加到req对象)

app.use(function(req, res, next) {
  app.currentUser = null;
  if (!req.accessToken) return next();
  req.accessToken.user(function(err, user) {
    if (err) return next(err);
    req.currentUser = user;
    next();
  });
});

将此添加到您的server.js或启动脚本中,因此user上的ctx.req.currentUser对象随时都有。