194 lines
4.5 KiB
Markdown
194 lines
4.5 KiB
Markdown
# 管理员登录系统 - 快速开始
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 1. 执行数据库脚本
|
||
|
||
```bash
|
||
# 执行建表脚本(包含管理员表和初始数据)
|
||
mysql -u root -p emotion_museum < sql/emotion_museum.sql
|
||
```
|
||
|
||
### 2. 启动应用
|
||
|
||
```bash
|
||
cd backend-single
|
||
mvn spring-boot:run
|
||
```
|
||
|
||
### 3. 测试登录
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8080/api/admin/auth/login \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"account": "admin",
|
||
"password": "admin123"
|
||
}'
|
||
```
|
||
|
||
## 📋 默认管理员账号
|
||
|
||
- **账号**: `admin`
|
||
- **密码**: `admin123`
|
||
- **角色**: `super_admin`
|
||
|
||
⚠️ **重要**: 生产环境部署后请立即修改默认密码!
|
||
|
||
## 🔑 API接口
|
||
|
||
### 管理员认证
|
||
|
||
| 接口 | 方法 | 路径 | 说明 |
|
||
|------|------|------|------|
|
||
| 登录 | POST | `/api/admin/auth/login` | 账号密码登录 |
|
||
| 获取信息 | GET | `/api/admin/auth/info` | 获取当前管理员信息 |
|
||
| 登出 | POST | `/api/admin/auth/logout` | 退出登录 |
|
||
| 刷新Token | POST | `/api/admin/auth/refreshToken` | 刷新访问令牌 |
|
||
|
||
### 管理员管理
|
||
|
||
| 接口 | 方法 | 路径 | 说明 |
|
||
|------|------|------|------|
|
||
| 分页查询 | GET | `/api/admin/page` | 分页查询管理员列表 |
|
||
| 查询详情 | GET | `/api/admin/detail` | 根据ID查询详情 |
|
||
| 创建 | POST | `/api/admin/create` | 创建新管理员 |
|
||
| 更新 | PUT | `/api/admin/update` | 更新管理员信息 |
|
||
| 删除 | DELETE | `/api/admin/delete` | 删除管理员 |
|
||
|
||
## 💡 使用示例
|
||
|
||
### 登录获取Token
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8080/api/admin/auth/login \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"account": "admin",
|
||
"password": "admin123"
|
||
}'
|
||
```
|
||
|
||
**响应**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "登录成功",
|
||
"data": {
|
||
"accessToken": "eyJhbGciOiJIUzUxMiJ9...",
|
||
"refreshToken": "eyJhbGciOiJIUzUxMiJ9...",
|
||
"expiresIn": 86400,
|
||
"adminInfo": {
|
||
"id": "xxx",
|
||
"account": "admin",
|
||
"username": "系统管理员",
|
||
"role": "super_admin"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### 使用Token访问接口
|
||
|
||
```bash
|
||
# 将上面获取的accessToken替换到下面的{TOKEN}
|
||
curl -X GET http://localhost:8080/api/admin/page?current=1&size=10 \
|
||
-H "Authorization: Bearer {TOKEN}"
|
||
```
|
||
|
||
### 创建新管理员
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8080/api/admin/create \
|
||
-H "Authorization: Bearer {TOKEN}" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"account": "admin2",
|
||
"password": "123456",
|
||
"username": "运营管理员",
|
||
"email": "admin2@example.com",
|
||
"phone": "13800138001",
|
||
"role": "admin",
|
||
"department": "运营部",
|
||
"position": "运营经理"
|
||
}'
|
||
```
|
||
|
||
## 🔐 安全特性
|
||
|
||
1. ✅ 密码BCrypt加密存储
|
||
2. ✅ JWT Token认证
|
||
3. ✅ Token类型隔离(admin/user)
|
||
4. ✅ 独立的拦截器验证
|
||
5. ✅ Redis存储Token
|
||
6. ✅ 登录信息记录
|
||
|
||
## 📚 详细文档
|
||
|
||
- [系统设计文档](docs/ADMIN_AUTH.md)
|
||
- [测试指南](docs/ADMIN_AUTH_TEST.md)
|
||
- [实现总结](docs/ADMIN_IMPLEMENTATION_SUMMARY.md)
|
||
|
||
## ⚙️ 配置说明
|
||
|
||
### JWT配置(application.yml)
|
||
|
||
```yaml
|
||
emotion:
|
||
jwt:
|
||
secret: emotion-museum-secret-key-2025 # JWT密钥
|
||
expiration: 86400000 # Token过期时间(24小时)
|
||
refresh-expiration: 604800000 # 刷新Token过期时间(7天)
|
||
```
|
||
|
||
### Redis配置
|
||
|
||
确保Redis服务正常运行,Token会存储在Redis中:
|
||
- 管理员Token: `admin_token:{adminId}`
|
||
- 管理员刷新Token: `admin_refresh_token:{adminId}`
|
||
|
||
## 🛠️ 常见问题
|
||
|
||
### Q: 登录返回401
|
||
**A**: 检查账号密码是否正确,确认数据库中有初始管理员数据
|
||
|
||
### Q: 访问接口返回403
|
||
**A**: 确保使用管理员Token访问管理员接口,普通用户Token无法访问
|
||
|
||
### Q: Token验证失败
|
||
**A**: Token可能已过期,重新登录或使用refreshToken刷新
|
||
|
||
### Q: 如何修改密码
|
||
**A**: 当前版本需要直接更新数据库,后续版本会提供密码修改接口
|
||
|
||
## 🎯 角色说明
|
||
|
||
系统支持三种管理员角色:
|
||
|
||
- `super_admin`: 超级管理员,拥有所有权限
|
||
- `admin`: 普通管理员
|
||
- `operator`: 运营人员
|
||
|
||
## 📝 开发建议
|
||
|
||
1. **生产环境**
|
||
- 修改默认密码
|
||
- 启用HTTPS
|
||
- 配置合适的Token过期时间
|
||
- 定期备份数据库
|
||
|
||
2. **安全建议**
|
||
- 定期更换JWT密钥
|
||
- 监控异常登录
|
||
- 实现登录失败次数限制
|
||
- 添加操作日志
|
||
|
||
3. **性能优化**
|
||
- 配置Redis连接池
|
||
- 优化数据库索引
|
||
- 实现Token缓存策略
|
||
|
||
## 📞 技术支持
|
||
|
||
如有问题,请查看详细文档或联系开发团队。
|