Files
OpenIsle/README.md

70 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OpenIsle
OpenIsle 是一个基于 Spring Boot 的社区后端平台示例,提供注册、登录和基于 JWT 的认证功能,支持使用 MySQL 作为数据库,并通过可插拔的邮件发送组件发送注册邮件。
## 功能特性
- **注册/登录**:用户可以注册并登录,密码使用 BCrypt 加密保存。
- **JWT 认证**:登录成功后返回 JWT后续请求需在 `Authorization` 头中携带 `Bearer` token。
- **邮件通知**:邮件发送通过 `EmailSender` 抽象实现,默认提供 `ResendEmailSender` 实现,可根据需要扩展。
- **灵活配置**数据库地址、账户密码、Resend API Key 等均可通过环境变量或 `application.properties` 配置。
- **角色权限**:内置 `ADMIN``USER` 两种角色,`/api/admin/**` 接口仅管理员可访问。
- **文章/评论**:支持发表文章并在文章下发布评论,评论可多级回复。
- **图片上传**:图片上传通过 `ImageUploader` 抽象实现,示例中提供基于腾讯云 COS 的 `CosImageUploader`
- **用户头像**`User` 模型新增 `avatar` 字段,可通过 `UserController` 上传并更新。
## 快速开始
### 环境准备
- Java 17+
- Maven 3+
- MySQL 数据库
### 构建与运行
1. 修改 `src/main/resources/application.properties`,或通过环境变量配置:
- `MYSQL_URL`:数据库连接 URL例如 `jdbc:mysql://localhost:3306/openisle`
- `MYSQL_USER`:数据库用户名。
- `MYSQL_PASSWORD`:数据库密码。
- `RESEND_API_KEY`Resend 邮件服务 API Key。
- `COS_BASE_URL`:腾讯云 COS 访问域名,用于生成图片链接。
- `JWT_SECRET`JWT 签名密钥。
- `JWT_EXPIRATION`JWT 过期时间(毫秒)。
2. 构建并运行:
```bash
mvn spring-boot:run
```
启动后访问:
- `POST /api/auth/register`:注册新用户,参数示例:
```json
{
"username": "test",
"email": "test@example.com",
"password": "password"
}
```
- `POST /api/auth/login`:登录,返回 `{ "token": "..." }`。
- 其他受保护接口示例:`GET /api/hello`,需在请求头加入 `Authorization: Bearer <token>`。
- 管理员接口示例:`GET /api/admin/hello`,需要具备 `ADMIN` 角色。
## 目录结构
```
src/main/java/com/openisle
├── OpenIsleApplication.java // 应用入口
├── config // Spring Security 配置
├── controller // 控制器
├── model // 数据模型
├── repository // 数据访问层
└── service // 业务逻辑
```
## 许可
本项目使用 MIT License可自由修改和分发。