feat: 添加用户认证系统
引入基于 Basic Auth 的用户认证系统,包括用户管理、登录界面和 API 鉴权 - 新增用户实体和管理功能 - 实现前端登录界面和凭证管理 - 重构 API 鉴权为 Basic Auth 模式 - 添加用户管理脚本工具
This commit is contained in:
197
uni-app-version/README.md
Normal file
197
uni-app-version/README.md
Normal file
@@ -0,0 +1,197 @@
|
||||
# 投标项目查看器 - uni-app 版本
|
||||
|
||||
这是一个基于 uni-app 开发的投标项目查看器,仿造了 Wails 桌面应用的功能。
|
||||
|
||||
## 技术栈
|
||||
|
||||
- ⚡ **Vue 3** - 使用 Composition API
|
||||
- 🎨 **Tailwind CSS** - 原子化 CSS 框架
|
||||
- 📘 **TypeScript** - 类型安全
|
||||
- 🔧 **Vite** - 快速构建工具
|
||||
- 🌍 **uni-app** - 跨平台框架
|
||||
|
||||
## 功能特性
|
||||
|
||||
- 📌 **置顶项目** - 查看置顶的投标项目
|
||||
- 🤖 **AI 推荐** - 查看 AI 推荐的项目
|
||||
- 📊 **爬虫状态** - 查看各数据源的爬虫状态
|
||||
- 🔄 **自动刷新** - 可配置的自动刷新间隔
|
||||
- 🎯 **环境变量** - 支持 .env 配置
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
uni-app-version/
|
||||
├── pages/ # 页面目录
|
||||
│ └── index/ # 主页面
|
||||
├── components/ # 组件目录
|
||||
│ ├── PinnedBids.vue
|
||||
│ ├── AiRecommendations.vue
|
||||
│ └── CrawlInfo.vue
|
||||
├── utils/ # 工具类
|
||||
│ └── api.js # API 请求封装
|
||||
├── static/ # 静态资源
|
||||
├── App.vue # 应用入口
|
||||
├── main.js # 入口文件
|
||||
├── manifest.json # 应用配置
|
||||
├── pages.json # 页面路由配置
|
||||
└── uni.scss # 全局样式变量
|
||||
```
|
||||
|
||||
## 开发说明
|
||||
|
||||
### 环境要求
|
||||
|
||||
- Node.js >= 14
|
||||
- HBuilderX 或 uni-app CLI
|
||||
|
||||
### 安装依赖
|
||||
|
||||
项目已配置 `.npmrc` 文件处理依赖版本兼容性问题,直接安装即可:
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
如果遇到依赖冲突,可以使用:
|
||||
|
||||
```bash
|
||||
npm install --legacy-peer-deps
|
||||
```
|
||||
|
||||
### 配置环境变量
|
||||
|
||||
项目使用 `.env` 文件管理环境变量。复制 `.env` 文件并根据需要修改:
|
||||
|
||||
```bash
|
||||
# .env
|
||||
VITE_API_BASE_URL=http://localhost:3000
|
||||
VITE_API_KEY=your_secure_api_key_here # 公网访问时需要的 API Key(可选)
|
||||
VITE_APP_TITLE=投标项目查看器
|
||||
VITE_APP_VERSION=1.0.0
|
||||
VITE_AUTO_REFRESH_INTERVAL=300000
|
||||
```
|
||||
|
||||
- `.env` - 默认配置
|
||||
- `.env.development` - 开发环境配置
|
||||
- `.env.production` - 生产环境配置
|
||||
|
||||
#### API Key 配置说明
|
||||
|
||||
当 `VITE_API_BASE_URL` 配置为公网地址(非 localhost)时,应用会自动在请求头中添加 `X-API-Key`。
|
||||
|
||||
**配置方式:**
|
||||
|
||||
1. **环境变量(推荐)**:在 `.env` 或 `.env.production` 中设置 `VITE_API_KEY`
|
||||
2. **本地存储**:应用会自动从 `uni.getStorageSync('apiKey')` 读取(如果环境变量未设置)
|
||||
|
||||
**注意事项:**
|
||||
- 本地访问(localhost 或 127.0.0.1)不需要 API Key,会自动放行
|
||||
- 公网访问必须提供正确的 API Key,否则会返回 401 错误
|
||||
- API Key 应该与后端配置的 `API_KEY` 环境变量一致
|
||||
|
||||
### 运行项目
|
||||
|
||||
#### H5 开发
|
||||
|
||||
```bash
|
||||
npm run dev:h5
|
||||
```
|
||||
|
||||
#### 微信小程序开发
|
||||
|
||||
```bash
|
||||
npm run dev:mp-weixin
|
||||
```
|
||||
|
||||
### 构建项目
|
||||
|
||||
#### H5 构建
|
||||
|
||||
```bash
|
||||
npm run build:h5
|
||||
```
|
||||
|
||||
#### 微信小程序构建
|
||||
|
||||
```bash
|
||||
npm run build:mp-weixin
|
||||
```
|
||||
|
||||
## API 接口
|
||||
|
||||
应用需要以下后端 API 接口:
|
||||
|
||||
- `GET /api/bids/pinned` - 获取置顶投标项目
|
||||
- `GET /api/ai/latest-recommendations` - 获取 AI 推荐
|
||||
- `GET /api/bids/crawl-info-stats` - 获取爬虫统计信息
|
||||
|
||||
## 功能说明
|
||||
|
||||
### 自动刷新
|
||||
|
||||
应用每 5 分钟自动刷新当前标签页的数据。
|
||||
|
||||
### 手动刷新
|
||||
|
||||
点击右上角的"🔄 刷新"按钮可以手动刷新当前标签页的数据。
|
||||
|
||||
### 下拉刷新
|
||||
|
||||
在主页面下拉可以刷新当前标签页的数据(需要启用下拉刷新功能)。
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 确保后端 API 服务已启动并运行在配置的地址上
|
||||
2. 如果遇到跨域问题,需要在后端配置 CORS
|
||||
3. 在非 H5 平台,点击链接会复制到剪贴板而不是直接打开
|
||||
4. **公网访问**:如果后端部署在公网,需要配置 `VITE_API_KEY` 环境变量,确保与后端的 `API_KEY` 一致
|
||||
5. **本地访问**:访问 localhost 或 127.0.0.1 时不需要 API Key,会自动放行
|
||||
|
||||
## 项目特点
|
||||
|
||||
### TypeScript 支持
|
||||
|
||||
所有代码使用 TypeScript 编写,提供完整的类型定义:
|
||||
|
||||
```typescript
|
||||
// API 请求类型安全
|
||||
export interface BidItem {
|
||||
id: string
|
||||
title: string
|
||||
url: string
|
||||
publishDate: string
|
||||
source: string
|
||||
pin: boolean
|
||||
createdAt: string
|
||||
updatedAt: string
|
||||
}
|
||||
```
|
||||
|
||||
### Tailwind CSS
|
||||
|
||||
使用 Tailwind CSS 进行样式开发,提供一致的设计系统:
|
||||
|
||||
```vue
|
||||
<view class="bg-white rounded-lg p-4 hover:shadow-lg">
|
||||
<!-- 内容 -->
|
||||
</view>
|
||||
```
|
||||
|
||||
### 环境变量
|
||||
|
||||
通过 Vite 的环境变量系统,支持多环境配置:
|
||||
|
||||
```typescript
|
||||
// 在代码中访问环境变量
|
||||
const apiUrl = import.meta.env.VITE_API_BASE_URL
|
||||
const apiKey = import.meta.env.VITE_API_KEY // API Key(可选)
|
||||
```
|
||||
|
||||
### API 鉴权
|
||||
|
||||
应用支持自动 API Key 鉴权:
|
||||
|
||||
- **本地访问**:访问 `localhost` 或 `127.0.0.1` 时,不会添加 API Key
|
||||
- **公网访问**:访问公网地址时,自动从环境变量或本地存储读取 API Key 并添加到请求头 `X-API-Key`
|
||||
- **配置方式**:通过环境变量 `VITE_API_KEY` 或本地存储 `apiKey` 配置
|
||||
Reference in New Issue
Block a user