Hapi-Auth-JWT2 项目教程
1. 项目的目录结构及介绍
Hapi-Auth-JWT2 项目的目录结构如下:
hapi-auth-jwt2/
├── examples/
│ └── hapi-auth-jwt2-example/
├── lib/
│ ├── index.js
│ └── validate.js
├── test/
│ ├── index.js
│ └── validate.js
├── .gitignore
├── .npmignore
├── .travis.yml
├── LICENSE
├── README.md
├── package.json
└── yarn.lock
目录结构介绍
- examples/: 包含示例项目,展示如何使用 hapi-auth-jwt2 插件。
- lib/: 包含插件的核心代码,其中
index.js
是插件的入口文件,validate.js
是验证逻辑的实现。 - test/: 包含插件的测试代码,确保插件的正确性和稳定性。
- .gitignore: 指定 Git 版本控制系统忽略的文件和目录。
- .npmignore: 指定 npm 发布时忽略的文件和目录。
- .travis.yml: Travis CI 的配置文件,用于持续集成测试。
- LICENSE: 项目的开源许可证。
- README.md: 项目的说明文档,包含安装、使用等指南。
- package.json: 项目的配置文件,包含依赖、脚本等信息。
- yarn.lock: Yarn 包管理器的锁文件,确保依赖版本的一致性。
2. 项目的启动文件介绍
项目的启动文件位于 examples/hapi-auth-jwt2-example/index.js
。以下是该文件的简要介绍:
const Hapi = require('@hapi/hapi');
const Jwt = require('hapi-auth-jwt2');
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
const validate = async (decoded, request, h) => {
// 验证逻辑
return { isValid: true };
};
const init = async () => {
await server.register(Jwt);
server.auth.strategy('jwt', 'jwt', {
key: 'NeverShareYourSecret',
validate,
verifyOptions: { algorithms: ['HS256'] }
});
server.auth.default('jwt');
server.route([
{
method: 'GET',
path: '/',
handler: (request, h) => {
return { message: 'Hello, world!' };
}
},
{
method: 'GET',
path: '/{name}',
handler: (request, h) => {
return { message: `Hello, ${request.params.name}!` };
}
}
]);
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
启动文件介绍
- 引入依赖: 引入
@hapi/hapi
和hapi-auth-jwt2
模块。 - 创建服务器: 使用
Hapi.server
创建一个服务器实例,配置端口和主机。 - 验证函数: 定义
validate
函数,用于验证 JWT 令牌。 - 注册插件: 使用
server.register
注册hapi-auth-jwt2
插件。 - 配置策略: 使用
server.auth.strategy
配置 JWT 认证策略。 - 默认策略: 使用
server.auth.default
设置默认的认证策略。 - 定义路由: 定义服务器路由,处理请求。
- 启动服务器: 使用
server.start
启动服务器,并输出服务器运行信息。
3. 项目的配置文件介绍
项目的配置文件是 package.json
,以下是该文件的简要介绍:
{
"name": "hapi-auth-jwt2",
"version": "1