1

我有一个使用 express 和 passport 进行身份验证的 NodeJS API 服务器。我正在使用通行证 azure 广告承载策略与 Microsoft Azure AD 进行身份验证。在文档中提供的示例 ( https://github.com/Azure-Samples/active-directory-node-webapi/blob/master/node-server/app.js#L50 ) 中,所有者 (currentUser) 是全局定义的 javascript 变量。如何将用户附加到请求,以便我可以执行类似的操作

server.post('/user', passport.authenticate('oauth-bearer', {
    session: false
}), function(req, res, next){
    console.log(`I am the current user ${req.user}`);
});

从 OIDC 策略中提到的示例中,我看到了一个允许将用户 ID 存储在会话中deserializeUserserializeUser函数,但是,在承载策略中,我们没有维护任何会话,因为将对每个传入的身份验证执行要求。

这可能是我理解的一个差距。我已经浏览了各个库的文档。如果有办法可以做到这一点,请帮助我

4

1 回答 1

0

以下是您可以将 yser 对象嵌入到 request object 的示例代码。因此,当您${req.user}在后回调中进行操作时,您将获得用户对象

const BearerStrategy = require('passport-azure-ad').BearerStrategy;
var bearerStrategy = new BearerStrategy(options,
      function(token, done) {
        findById(token.oid, function(err, user) {
          if (err) {
            return done(err);
          }
          if (!user) {
            // "Auto-registration"
            return done(null, token);
          }
          const owner = token.oid;
          return done(null, user, token);
        });
      }

);
于 2020-06-24T19:54:07.877 回答