4.5 KiB
4.5 KiB
管理员登录系统 - 快速开始
🚀 快速开始
1. 执行数据库脚本
# 执行建表脚本(包含管理员表和初始数据)
mysql -u root -p emotion_museum < sql/emotion_museum.sql
2. 启动应用
cd backend-single
mvn spring-boot:run
3. 测试登录
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
curl -X POST http://localhost:8080/api/admin/auth/login \
-H "Content-Type: application/json" \
-d '{
"account": "admin",
"password": "admin123"
}'
响应:
{
"code": 200,
"message": "登录成功",
"data": {
"accessToken": "eyJhbGciOiJIUzUxMiJ9...",
"refreshToken": "eyJhbGciOiJIUzUxMiJ9...",
"expiresIn": 86400,
"adminInfo": {
"id": "xxx",
"account": "admin",
"username": "系统管理员",
"role": "super_admin"
}
}
}
使用Token访问接口
# 将上面获取的accessToken替换到下面的{TOKEN}
curl -X GET http://localhost:8080/api/admin/page?current=1&size=10 \
-H "Authorization: Bearer {TOKEN}"
创建新管理员
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": "运营经理"
}'
🔐 安全特性
- ✅ 密码BCrypt加密存储
- ✅ JWT Token认证
- ✅ Token类型隔离(admin/user)
- ✅ 独立的拦截器验证
- ✅ Redis存储Token
- ✅ 登录信息记录
📚 详细文档
⚙️ 配置说明
JWT配置(application.yml)
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: 运营人员
📝 开发建议
-
生产环境
- 修改默认密码
- 启用HTTPS
- 配置合适的Token过期时间
- 定期备份数据库
-
安全建议
- 定期更换JWT密钥
- 监控异常登录
- 实现登录失败次数限制
- 添加操作日志
-
性能优化
- 配置Redis连接池
- 优化数据库索引
- 实现Token缓存策略
📞 技术支持
如有问题,请查看详细文档或联系开发团队。