在 Web 开发中,认证是确保用户身份安全的关键部分。而在 Hapi 框架中,我们可以使用 hapi-auth-basic 插件来快速设置基本认证。
安装 hapi-auth-basic 插件
在使用 hapi-auth-basic 插件之前,我们需要先安装它。使用 npm 命令:
npm install hapi-auth-basic
在 Hapi 中启用认证插件
在 Hapi 中启用插件非常简单。只需在服务器的 register() 函数中注册插件即可:
// javascriptcn.com 代码示例 const Hapi = require('@hapi/hapi'); const Basic = require('@hapi/basic'); const init = async () => { const server = Hapi.server({ port: 3000, host: 'localhost' }); await server.register(Basic); server.auth.strategy('simple', 'basic', { validate }); server.route({ method: 'GET', path: '/', options: { auth: 'simple' }, handler: (request, h) => { return 'Hello World!'; } }); await server.start(); console.log('Server running on %s', server.info.uri); }; const validate = async (request, username, password, h) => { let isValid = false; if (username === 'admin' && password === 'password') { isValid = true; } return {isValid, credentials: {name: username, scope: ['admin']}}; }; process.on('unhandledRejection', (err) => { console.log(err); process.exit(1); }); init();
在上面的代码中,我们首先注册了 hapi-auth-basic 插件。然后,我们使用 auth.strategy() 函数来定义一个简单的认证策略,其中 validate 回调函数用于验证用户凭据。
在 server.route() 中,我们定义了一个 GET 路由,使用 auth 参数设置路由需要进行简单认证策略来保护。handler 函数中的代码仅仅返回一个 "Hello World!" 的字符串,因为我们只需要确保路由在成功执行前通过了简单认证。
验证凭证
在前面的代码片段中,我们定义了一个简单的验证回调函数。它接收传入的请求对象、用户名和密码作为参数。回调函数检查用户名与密码并返回一个具有 isValid 布尔值和 credentials 对象的响应,其中 credentials 对象可以包含您想要将用户信息传递到路由上的任何信息。 在本例中,credentials 中包含用户名和 admin 范围。
认证策略
默认情况下,在 hapi-auth-basic 插件中,策略名称是 simple。您将使用这个名称与您的路由配置,用以指定哪些路由需要进行简单的认证。 在实际生产应用程序中,需要样式应用程序采用更复杂的身份验证策略,如 JSON Web Tokens (JWT) 或 OAuth。
总结
在本篇文章中,我们介绍了 Hapi 框架中使用 hapi-auth-basic 进行基本认证的方法。我们已经看到如何安装和启用此插件,以及如何定义基本身份验证策略并验证凭据以使路由安全。
Hapi 框架提供了许多内置的插件和函数,使 Web 开发变得更加容易。要学习并使用 Hapi 进行 Web 开发,请参阅 Hapi 的官方文档和示例代码,以了解更多信息。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6549d6377d4982a6eb40d580