如何在环回中更好地获取当前用户id

How do I better get current user id in Loopback

本文关键字:获取 用户 id 更好      更新时间:2023-09-26

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

也许我可以在请求有效负载中发送令牌id并检查它?如果用户拿了怎么办?从Github上的问题页面有哪些替代方案?

查看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

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

一旦您完成了这些,您可以通过(从https://github.com/strongloop/loopback/issues/569#issuecomment-60924099获取,除了将用户附加到req对象)

获取accessToken
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或引导脚本中,从而在ctx.req.currentUser上的任何位置都有user对象。