在hapijs中有多个身份验证方案?

时间:2016-06-18 08:47:13

标签: hapijs

我正在使用hapi.js构建应用程序。此应用程序的客户端将是Web应用程序,因此通过coookie中的JWT或将要发送Bearer密钥头的OAuth2客户端进行身份验证。

框架是否允许在同一路线上使用这两种方案?如果两个方案都失败,我希望身份验证失败,但如果其中任何一个失败,我希望通过。

2 个答案:

答案 0 :(得分:1)

查看auth.strategies下的http://hapijs.com/api#route-options。这将允许您为路线设置多个策略。您可以使用auth.mode定义行为。

答案 1 :(得分:1)

hapi支持multiple authentication strategies for a route。注册用于身份验证的单个插件,然后设置默认的身份验证方案。

var Hapi = require('hapi')  
var BasicAuth = require('hapi-auth-basic')  
var CookieAuth = require('hapi-auth-cookie')

// create new server instance
var server = new Hapi.Server()

// register plugins to server instance
server.register([ BasicAuth, CookieAuth ], function (err) {  
  if (err) {…}

  server.auth.strategy('simple', 'basic', { validateFunc: basicValidationFn })  
  server.auth.strategy('session', 'cookie', { password: '…' })

  server.auth.default('simple')
})

每个身份验证方案可能需要您需要提供的专用配置(如cookie密码,验证功能等)。