2016-06-18 35 views
1

我正在使用hapi.js構建應用程序。這個應用程序的客戶端將是一個Web應用程序,因此身份驗證是通過coookie中的JWT或通過將要發送承載密鑰標頭的OAuth2客戶端進行的。hapijs中的多個auth方案?

有沒有某種方式可以讓框架同時使用這兩種方案?如果兩種方案均失敗,我希望認證失敗,但如果兩種方案都通過,則通過認證。

回答

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密碼,驗證功能等)。