我正在使用hapi.js構建應用程序。這個應用程序的客戶端將是一個Web應用程序,因此身份驗證是通過coookie中的JWT或通過將要發送承載密鑰標頭的OAuth2客戶端進行的。hapijs中的多個auth方案?
有沒有某種方式可以讓框架同時使用這兩種方案?如果兩種方案均失敗,我希望認證失敗,但如果兩種方案都通過,則通過認證。
我正在使用hapi.js構建應用程序。這個應用程序的客戶端將是一個Web應用程序,因此身份驗證是通過coookie中的JWT或通過將要發送承載密鑰標頭的OAuth2客戶端進行的。hapijs中的多個auth方案?
有沒有某種方式可以讓框架同時使用這兩種方案?如果兩種方案均失敗,我希望認證失敗,但如果兩種方案都通過,則通過認證。
查看http://hapijs.com/api#route-options根據auth.strategies
。這將允許您爲您的路線設置多個策略。您可以使用auth.mode
定義行爲。
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密碼,驗證功能等)。