hapijs 中的范围和实体有什么区别?

Kev*_* Wu 5 hapijs

我正在查看 hapi 路由的一些身份验证配置选项。我了解范围是如何工作的 - 您可以设置路由的范围,'admin'这意味着用户的凭据必须具有匹配的范围......但是目的是entity什么?

以下是文档:

  • entity - 所需的经过身份验证的实体类型。如果设置,则必须与身份验证凭据的实体值匹配。可用值:
    • any - 可以代表用户或应用程序进行身份验证。这是默认值。
    • 用户- 身份验证必须代表用户进行。
    • app - 身份验证必须代表应用程序。

当我'user'在路线上设置实体时,我收到此错误:

"message": "Application credentials cannot be used on a user endpoint"

这让我相信我的身份验证插件正在将我的实体设置为'app'?作为参考,我正在使用hapi-auth-jwt

alu*_*ian 0

您可以hapi-auth-jwt在验证器函数中知道经过身份验证的请求具有什么实体:

var validate = function (decodedToken, callback) {
  ...

  credentials = {
    entity: 'user',
    ...
  };

  return callback(error, authorized, credentials)
};
Run Code Online (Sandbox Code Playgroud)

有关凭证对象的更多信息请参见此处