feat: 实现微信小程序后端接口与用户认证系统
新增微信登录/注册合一接口、资料完善接口和token刷新接口 重构用户服务层,支持自动维护用户类型和资料完整度 引入JWT认证中间件和请求验证中间件 更新文档与测试用例,支持dist构建部署
This commit is contained in:
@@ -60,12 +60,20 @@ wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo b
|
||||
|
||||
## 后端部署
|
||||
|
||||
后端建议采用 **dist 发布目录部署**,即:
|
||||
|
||||
1. 在构建机执行 `npm run build`
|
||||
2. 生成 `back-end/dist/` 发布产物
|
||||
3. 服务器仅部署 `dist/`、`package.json`、`package-lock.json` 与 `.env`
|
||||
4. 服务器执行 `npm install --omit=dev`
|
||||
5. 服务器执行 `npm start`
|
||||
|
||||
### 1. 创建Dockerfile
|
||||
|
||||
在 `back-end` 目录创建 `Dockerfile` 文件:
|
||||
|
||||
```dockerfile
|
||||
FROM node:22-alpine
|
||||
FROM node:22-alpine AS build
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
@@ -73,10 +81,57 @@ COPY package*.json ./
|
||||
RUN npm install
|
||||
|
||||
COPY . .
|
||||
RUN npm run build
|
||||
|
||||
FROM node:22-alpine AS production
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY --from=build /app/package*.json ./
|
||||
RUN npm install --omit=dev
|
||||
|
||||
COPY --from=build /app/dist ./dist
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
CMD ["node", "src/index.js"]
|
||||
CMD ["node", "dist/src/index.js"]
|
||||
```
|
||||
|
||||
### 1.1 本地构建与上传发布包
|
||||
|
||||
在 `back-end/` 目录执行:
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npm run lint
|
||||
npm run test
|
||||
npm run build
|
||||
```
|
||||
|
||||
构建成功后会生成:
|
||||
|
||||
```text
|
||||
back-end/dist/
|
||||
src/
|
||||
spec/
|
||||
package.json
|
||||
package-lock.json
|
||||
.env
|
||||
eslint.config.js
|
||||
```
|
||||
|
||||
如果你采用服务器源码分离部署,建议上传以下内容到服务器:
|
||||
|
||||
- `dist/`
|
||||
- `package.json`
|
||||
- `package-lock.json`
|
||||
- `.env`
|
||||
|
||||
然后在服务器执行:
|
||||
|
||||
```bash
|
||||
npm install --omit=dev
|
||||
npm start
|
||||
```
|
||||
|
||||
### 2. 创建docker-compose.yml
|
||||
@@ -202,20 +257,21 @@ chmod +x deploy.sh
|
||||
3. 配置前端代理:
|
||||
- 代理名称:frontend
|
||||
- 目标URL:http://localhost:80
|
||||
- 发送域名:你的域名
|
||||
- 发送域名:`bai-api.blv-oa.com`(如前后端分域,请按实际前端域名填写)
|
||||
4. 配置后端代理:
|
||||
- 代理名称:backend
|
||||
- 目标URL:http://localhost:3000
|
||||
- 发送域名:你的域名
|
||||
- 发送域名:`bai-api.blv-oa.com`
|
||||
- 路径:/api
|
||||
5. 点击「保存」
|
||||
|
||||
### 3. 配置SSL证书(可选)
|
||||
### 3. 配置SSL证书(必须)
|
||||
|
||||
1. 进入网站设置
|
||||
2. 点击「SSL」→「Let's Encrypt」
|
||||
3. 申请并安装SSL证书
|
||||
4. 开启「强制HTTPS」
|
||||
5. 确保域名 `bai-api.blv-oa.com` 已正确解析到服务器公网 IP
|
||||
|
||||
## 环境变量配置
|
||||
|
||||
@@ -227,6 +283,9 @@ chmod +x deploy.sh
|
||||
# Server Configuration
|
||||
PORT=3000
|
||||
NODE_ENV=production
|
||||
APP_PROTOCOL=https
|
||||
APP_DOMAIN=bai-api.blv-oa.com
|
||||
APP_BASE_URL=https://bai-api.blv-oa.com
|
||||
|
||||
# Database Configuration
|
||||
DB_HOST=db
|
||||
@@ -238,7 +297,7 @@ JWT_SECRET=your_jwt_secret_key
|
||||
JWT_EXPIRES_IN=24h
|
||||
|
||||
# CORS Configuration
|
||||
CORS_ORIGIN=*
|
||||
CORS_ORIGIN=https://bai-api.blv-oa.com
|
||||
```
|
||||
|
||||
### 前端环境变量
|
||||
@@ -246,11 +305,21 @@ CORS_ORIGIN=*
|
||||
在 `front-end/.env.production` 文件中配置:
|
||||
|
||||
```env
|
||||
VUE_APP_API_BASE_URL=http://your-domain.com/api
|
||||
VUE_APP_BASE_URL=https://bai-api.blv-oa.com/api
|
||||
VUE_APP_TITLE=BAI管理系统
|
||||
VUE_APP_VERSION=1.0.0
|
||||
```
|
||||
|
||||
## 域名解析与 HTTPS 部署建议
|
||||
|
||||
正式环境建议按以下方式部署:
|
||||
|
||||
1. 将域名 `bai-api.blv-oa.com` 的 DNS A 记录指向服务器公网 IP
|
||||
2. 宝塔/Nginx 为该域名签发并启用 SSL 证书
|
||||
3. Nginx 对外暴露 `443`,再反向代理到容器内 `backend:3000`
|
||||
4. 前端生产环境接口地址统一使用:`https://bai-api.blv-oa.com/api`
|
||||
5. 后端对外公开地址统一使用 `APP_BASE_URL=https://bai-api.blv-oa.com`
|
||||
|
||||
## 数据库配置
|
||||
|
||||
### Pocketbase设置
|
||||
@@ -265,6 +334,18 @@ VUE_APP_VERSION=1.0.0
|
||||
|
||||
## 监控与维护
|
||||
|
||||
### 后端发布命令
|
||||
|
||||
后端推荐命令:
|
||||
|
||||
```bash
|
||||
# 构建发布产物
|
||||
npm run build
|
||||
|
||||
# 生产启动
|
||||
npm start
|
||||
```
|
||||
|
||||
### 查看日志
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user