feat: 实现阿里云OSS存储功能并确保配置安全 - 集成阿里云OSS SDK用于文件存储 - 实现文件上传、下载、删除功能 - 支持临时URL生成确保安全访问 - 使用环境变量管理敏感配置 - 添加配置文档和示例文件 - 修复前端TypeScript类型错误 - 调整课程表学期选择器宽度

czq
2991692032 2 weeks ago
parent 67283cf653
commit c479932e37

@ -0,0 +1,87 @@
# 项目配置说明
## 环境配置
本项目使用环境变量和本地配置文件来管理敏感信息,确保安全性。
### 1. 本地开发环境配置
创建 `src/main/resources/application-local.yml` 文件(已在.gitignore中忽略
```yaml
# 本地开发环境配置
aliyun:
oss:
endpoint: your-endpoint
accessKeyId: your-access-key-id
accessKeySecret: your-access-key-secret
bucketName: your-bucket-name
urlPrefix: https://your-bucket-name.oss-region.aliyuncs.com/
```
### 2. 环境变量配置
复制 `env.example``.env` 并填入真实配置:
```bash
cp env.example .env
```
然后编辑 `.env` 文件,填入您的真实配置信息。
### 3. 启动应用
#### 方式1使用本地配置文件
```bash
java -jar app.jar --spring.profiles.active=local
```
#### 方式2使用环境变量
```bash
# 设置环境变量
export ALIYUN_OSS_ENDPOINT=your-endpoint
export ALIYUN_OSS_ACCESS_KEY_ID=your-access-key-id
export ALIYUN_OSS_ACCESS_KEY_SECRET=your-access-key-secret
export ALIYUN_OSS_BUCKET_NAME=your-bucket-name
export ALIYUN_OSS_URL_PREFIX=https://your-bucket-name.oss-region.aliyuncs.com/
# 启动应用
java -jar app.jar
```
## 阿里云OSS配置
### 1. 创建OSS Bucket
1. 登录阿里云控制台
2. 进入对象存储OSS服务
3. 创建Bucket选择合适的地域和存储类型
4. 配置访问权限(推荐私有读写)
### 2. 获取AccessKey
1. 进入阿里云控制台
2. 点击右上角头像 -> AccessKey管理
3. 创建AccessKey建议使用RAM子账号
4. 为RAM用户授予OSS相关权限
### 3. 配置跨域访问CORS
在OSS控制台设置CORS规则
- 来源:您的前端域名
- 允许MethodsGET, POST, PUT, DELETE, HEAD
- 允许Headers*
- 暴露HeadersETag, x-oss-request-id
## 安全注意事项
1. **永远不要将AccessKey提交到代码仓库**
2. **使用RAM子账号最小权限原则**
3. **定期轮换AccessKey**
4. **启用OSS访问日志监控**
5. **配置适当的Bucket策略**
## 生产环境部署
生产环境建议使用以下方式之一:
1. **容器环境变量**Docker/Kubernetes
2. **云服务商的密钥管理服务**
3. **专门的配置中心**如Nacos、Apollo

@ -0,0 +1,28 @@
# 环境变量配置示例
# 复制此文件为 .env 并填入真实配置
# 阿里云OSS配置
ALIYUN_OSS_ENDPOINT=your-endpoint
ALIYUN_OSS_ACCESS_KEY_ID=your-access-key-id
ALIYUN_OSS_ACCESS_KEY_SECRET=your-access-key-secret
ALIYUN_OSS_BUCKET_NAME=your-bucket-name
ALIYUN_OSS_URL_PREFIX=https://your-bucket-name.oss-region.aliyuncs.com/
# 数据库配置
DB_URL=jdbc:mysql://localhost:3306/UniLife?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8
DB_USERNAME=root
DB_PASSWORD=123456
# Redis配置
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
# JWT配置
JWT_SECRET=qwertyuiopasdfghjklzxcvbnm
JWT_EXPIRATION=86400
# 邮箱配置
MAIL_HOST=smtp.163.com
MAIL_PORT=465
MAIL_USERNAME=your-email@163.com
MAIL_PASSWORD=your-auth-code

@ -24,6 +24,8 @@ spring:
redis: redis:
port: 6379 port: 6379
host: 127.0.0.1 host: 127.0.0.1
profiles:
active: local
knife4j: knife4j:
enable: true enable: true
openapi: openapi:
@ -51,4 +53,12 @@ logging:
com.unilife: debug com.unilife: debug
jwt: jwt:
secret: qwertyuiopasdfghjklzxcvbnm secret: qwertyuiopasdfghjklzxcvbnm
expiration: 86400 expiration: 86400
# 添加阿里云OSS配置
aliyun:
oss:
endpoint: ${ALIYUN_OSS_ENDPOINT:your-endpoint}
accessKeyId: ${ALIYUN_OSS_ACCESS_KEY_ID:your-access-key-id}
accessKeySecret: ${ALIYUN_OSS_ACCESS_KEY_SECRET:your-access-key-secret}
bucketName: ${ALIYUN_OSS_BUCKET_NAME:your-bucket-name}
urlPrefix: ${ALIYUN_OSS_URL_PREFIX:https://your-bucket-name.oss-region.aliyuncs.com/}
Loading…
Cancel
Save