register: async (server, options) => {
server.ext('onRequest', (request, h) => {
if (request.params) {
log.verbose(`onRequest:${request.method.toUpperCase()}:${request.path}/${request.params}`)
} else {
log.verbose(`onRequest:${request.method.toUpperCase()}:${request.path}`)
}
if (Object.getOwnPropertyNames(request.query).length) {
log.verbose(`onRequest:queryParameters: ${JSON.stringify(request.query)}`)
}
if (request.headers && request.headers['x-access-token']) {
log.verbose(`onRequest:heders:x-access-token ${JSON.stringify(request.headers['x-access-token'])}`)
}
return h.continue
})
server.ext('onPreAuth', (request, h) => {
log.verbose('onPreAuth')
return h.continue
})
server.ext('onCredentials', (request, h) => {
log.verbose('onCredentials')
return h.continue
})
server.ext('onPostAuth', (request, h, error) => {
if (request.payload) {
log.verbose(`onPostAuth:bodyPayload: ${JSON.stringify(request.payload)}`)
}
return h.continue
})
server.ext('onPreHandler', (request, h) => {
log.verbose('onPreHandler')
return h.continue
})
server.ext('onPostHandler', (request, h) => {
log.verbose('onPostHandler')
return h.continue
})
server.ext('onPreResponse', (request, h) => {
if (request && request.response && request.response.source) {
try {
log.verbose(`onPreResponse:${JSON.stringify(request.response.source)}`)
} catch (err) {
log.warn(err)
log.verbose(h.request.response.source.toString())
}
}
return h.continue
})
}
Run Code Online (Sandbox Code Playgroud)
这些是 Hapi 生命周期:
OnPreResponse:返回响应时调用。
7 onCredentials:是 Hapi v17 的新增功能。
无法理解onCredentials的用途。另外,如果我对 hapi 生命周期的理解错误,请纠正我。
你的理解是正确的。onCredentials添加到OnPreAuth和OnPostAuth之间,这里关于它的信息很少。
\n\n\n\n\n新的 onCredentials 扩展点以及在验证授权之前更改\n 请求凭据的能力。
\n
来源: https: //github.com/hapijs/hapi/issues/3658
\n\n这里还有一点
\n\n\n\n\nonCredentials:新的请求扩展点 hapi 提供的每个请求都遵循预定义的路径:请求生命周期。根据您是否需要身份验证或验证,框架会跳过各个生命周期点。
\n\nhapi v17 中有一个新的扩展点:onCredentials。此扩展点位于 onPreAuth 之后、onPostAuth 之前。在 onPreAuth 中,hapi 验证请求并识别用户。授权是 onPostAuth 的一部分,就像检查请求范围以验证请求是否具有访问权限一样。
\n\n在onCredentials中,您可以在请求授权之前自定义凭据。
\n
来源:https ://futurestud.io/tutorials/hapi-v17-upgrade-guide-your-move-to-async-await
\n\n这意味着您可以修改凭据对象。这是简单的示例代码。假设您想在基于用户信息进行身份验证后更新凭据范围。
\n\nserver.ext(\'onCredentials\', (request, h) => {\n\n request.auth.credentials.scope = \'customadmin\';\n return h.continue;\n});\nRun Code Online (Sandbox Code Playgroud)\n\n\n
| 归档时间: |
|
| 查看次数: |
8867 次 |
| 最近记录: |