- 服务器 Server
- server([options])
- Server options
- 服务器属性 Server properties
- server.auth.default(options)
- server.auth.scheme(name, scheme)
- server.auth.strategy(name, scheme, [options])
- await server.auth.test(strategy, request)
- await server.auth.verify(request)
- server.bind(context)
- server.cache(options)
- await server.cache.provision(options)
- server.control(server)
- server.decoder(encoding, decoder)
- server.decorate(type, property, method, [options])
- server.dependency(dependencies, [after])
- server.encoder(encoding, encoder)
- server.event(events)
- await server.events.emit(criteria, data)
- server.events.on(criteria, listener)
- server.events.once(criteria, listener)
- await server.events.once(criteria)
- server.expose(key, value)
- server.expose(obj)
- server.ext(events)
- server.ext(event, method, [options])
- await server.initialize()
- await server.inject(options)
- server.log(tags, [data, [timestamp]])
- server.lookup(id)
- server.match(method, path, [host])
- server.method(name, method, [options])
- server.method(methods)
- server.path(relativeTo)
- await server.register(plugins, [options])
- server.route(route)
- server.rules(processor, [options])
- await server.start()
- server.state(name, [options])
- server.states.add(name, [options])
- await server.states.format(cookies)
- await server.states.parse(header)
- await server.stop([options])
- server.table([host])
- Route options
- route.options.app
- route.options.auth
- route.options.bind
- route.options.cache
- route.options.compression
- route.options.cors
- route.options.description
- route.options.ext
- route.options.files
- route.options.handler
- route.options.id
- route.options.isInternal
- route.options.json
- route.options.jsonp
- route.options.log
- route.options.notes
- route.options.payload
- route.options.plugins
- route.options.pre
- route.options.response
- route.options.rules
- route.options.security
- route.options.state
- route.options.tags
- route.options.timeout
- route.options.validate
- Request lifecycle
- 请求
- 插件
server.auth.scheme(name, scheme)
注册身份验证方案:
name
- 方案名称。scheme
- 用签名function(server, options)
实现该方案 其中:server
- 一个参考方案被添加到服务器对象。options
- (可选的) 当实例一个策略时, 传给server.auth.strategy()
的options
参数.
返回值: none.
当调用时, scheme
函数必须返回一个 authentication scheme object
身份验证方案
身份验证方案是具有以下属性的对象:
api
- (可选) 通过server.auth.api
公开的对象.async authenticate(request, h)
- (必要) 为使用身份验证方案配置的每个传入请求调用 lifecycle method 函数。 方法提供了两个特殊的工具包方法,用于返回经过身份验证或未经身份验证的方法结果:h.authenticated()
- 表示【indicate】请求已成功验证。h.unauthenticated()
- 表示请求验证失败.
async payload(request, h)
- (可选) 用于验证请求有效负载的 lifecycle method 。async response(request, h)
- (可选) 一个 lifecycle method 用于写入响应头或有效负荷之前描述带有身份认证头的响应。async verify(auth)
- (可选) 用于验证提供的身份验证凭据的方法仍然有效 (例如初始身份验证后未过期或撤消) 其中:auth
-request.auth
对象包含credentials
和artifacts
对象,由 scheme'sauthenticate()
方法返回。- 当传递的凭据不再有效时,该方法抛出
Error
(例如 过期或 撤销). 请注意,该方法无法访问原始请求,只能访问authenticate()
方法生成的凭证和 artifacts。
options
- (可选) 具有以下键的对象:payload
- 如果是true
,则需要将有效负载验证作为方案的一部分,并禁止路由禁用有效负载验证。 默认为false
。
当方案 authenticate()
方法实现抛出错误或调用 h.unauthenticated()
时, 错误的细节会影响是否尝试其他身份验证策略(如果为路由配置)。如果错误包含消息,则不会尝试其他策略。 如果 err
不包含消息但包含方案名称(例如 Boom.unauthorized(null, 'Custom')
),将按优先顺序尝试其他策略(在路由配置中定义)。 如果身份验证失败,方案名称将出现在 'WWW-Authenticate' header 中。
当 payload()
方法抛出错误消息时,这意味着有 payload 验证因负载不良而失败。如果错误没有消息但包含 scheme 名称(例如 Boom.unauthorized(null, 'Custom')
),如果路由 auth.payload
配置设置为 'optional'
,则认证可能仍然成功。
const Hapi = require('hapi'); const server = Hapi.server({ port: 80 }); const scheme = function (server, options) { return { authenticate: function (request, h) { const req = request.raw.req; const authorization = req.headers.authorization; if (!authorization) { throw Boom.unauthorized(null, 'Custom'); } return h.authenticated({ credentials: { user: 'john' } }); } }; }; server.auth.scheme('custom', scheme);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论