ORY Hydra 用户登录和同意接口的 ExpressJS 参考实现教程
1. 项目的目录结构及介绍
ORY Hydra 用户登录和同意接口的 ExpressJS 参考实现项目的目录结构如下:
hydra-login-consent-node/
├── src/
│ ├── routes/
│ │ ├── login.ts
│ │ ├── consent.ts
│ ├── services/
│ │ ├── hydra.js
├── views/
│ ├── login.ejs
│ ├── consent.ejs
├── .env
├── package.json
├── tsconfig.json
目录结构介绍
src/routes/
: 包含处理登录和同意请求的路由文件。login.ts
: 处理用户登录请求的路由。consent.ts
: 处理用户同意请求的路由。
src/services/
: 包含与 ORY Hydra 服务交互的服务文件。hydra.js
: 使用node-fetch
库进行 HTTP 请求的简单助手。
views/
: 包含用于渲染登录和同意界面的模板文件。login.ejs
: 登录界面的模板。consent.ejs
: 同意界面的模板。
.env
: 配置环境变量文件。package.json
: 项目依赖和脚本配置文件。tsconfig.json
: TypeScript 配置文件。
2. 项目的启动文件介绍
项目的启动文件是 src/index.ts
,它负责启动 Express 服务器并加载必要的中间件和路由。
启动文件内容
import express from 'express';
import { config } from 'dotenv';
import { join } from 'path';
import { loginRouter } from './routes/login';
import { consentRouter } from './routes/consent';
config(); // 加载环境变量
const app = express();
const port = process.env.PORT || 3000;
app.set('views', join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use('/login', loginRouter);
app.use('/consent', consentRouter);
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
启动文件介绍
config()
: 加载.env
文件中的环境变量。express()
: 创建 Express 应用实例。app.set()
: 设置视图引擎和视图目录。app.use()
: 加载中间件和路由。app.listen()
: 启动服务器并监听指定端口。
3. 项目的配置文件介绍
项目的配置文件是 .env
,它用于存储环境变量,如端口号、ORY Hydra 的 URL 等。
配置文件内容示例
PORT=3000
HYDRA_ADMIN_URL=http://localhost:4445
配置文件介绍
PORT
: 指定服务器监听的端口号。HYDRA_ADMIN_URL
: 指定 ORY Hydra 的管理接口 URL。
通过这些配置,可以灵活地调整项目的运行环境和与 ORY Hydra 的交互。