Initial commit
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
# MeshRay 密码重置功能 - 最新更新
|
||||
|
||||
**更新时间**: 2026-03-25
|
||||
**版本**: v2.0.0+
|
||||
|
||||
---
|
||||
|
||||
## 🎉 重要更新
|
||||
|
||||
### 之前:需要独立的 reset-password.exe
|
||||
|
||||
❌ **旧方式**:
|
||||
```bash
|
||||
# 需要先编译独立工具
|
||||
go build -o reset-password.exe cmd/reset-password/main.go
|
||||
.\reset-password.exe
|
||||
```
|
||||
|
||||
### 现在:直接集成在 meshray.exe 中
|
||||
|
||||
✅ **新方式**:
|
||||
```bash
|
||||
# 直接使用主程序命令
|
||||
.\meshray.exe reset-password
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 使用方法
|
||||
|
||||
### 方法 1: 自动生成随机密码
|
||||
|
||||
```powershell
|
||||
cd E:\Project\MeshRay
|
||||
.\meshray.exe reset-password
|
||||
```
|
||||
|
||||
**输出**:
|
||||
```
|
||||
MeshRay - 重置管理员密码
|
||||
=========================
|
||||
|
||||
========================================
|
||||
✅ 管理员密码已重置
|
||||
========================================
|
||||
用户名:admin
|
||||
新密码:oZb18/up9If/aCuQ
|
||||
****************************************
|
||||
⚠️ 请妥善保管密码,建议登录后立即修改
|
||||
========================================
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 方法 2: 手动指定新密码
|
||||
|
||||
```powershell
|
||||
.\meshray.exe reset-password -p "MyNewPassword123"
|
||||
```
|
||||
|
||||
**参数**:
|
||||
- `-p`: 指定新密码
|
||||
- `--password`: 同上(完整形式)
|
||||
|
||||
---
|
||||
|
||||
## 🔧 技术实现
|
||||
|
||||
### 代码位置
|
||||
|
||||
**文件**: [`cmd/meshray/main.go`](file://e:/Project/MeshRay/cmd/meshray/main.go)
|
||||
|
||||
**关键代码**:
|
||||
```go
|
||||
func main() {
|
||||
// 检查命令行参数
|
||||
if len(os.Args) > 1 && os.Args[1] == "reset-password" {
|
||||
runResetPassword()
|
||||
return
|
||||
}
|
||||
|
||||
// ... 正常启动流程
|
||||
}
|
||||
|
||||
// runResetPassword 重置管理员密码
|
||||
func runResetPassword() {
|
||||
// 1. 加载配置
|
||||
cfg, _ := config.Load("")
|
||||
|
||||
// 2. 连接数据库
|
||||
store, _ := store.New(cfg.Database.Path)
|
||||
defer store.Close()
|
||||
|
||||
// 3. 创建用户服务
|
||||
userService := service.NewUserService(store)
|
||||
|
||||
// 4. 生成或使用指定密码
|
||||
var newPassword string
|
||||
if len(os.Args) > 2 && (os.Args[2] == "-p" || os.Args[2] == "--password") {
|
||||
newPassword = os.Args[3]
|
||||
} else {
|
||||
newPassword = service.GenerateRandomPassword(16)
|
||||
}
|
||||
|
||||
// 5. 重置密码
|
||||
userService.ResetAdminPassword(newPassword)
|
||||
|
||||
// 6. 输出结果
|
||||
fmt.Println("✅ 管理员密码已重置")
|
||||
fmt.Printf("新密码:%s\n", newPassword)
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ 测试验证
|
||||
|
||||
### 测试 1: 自动生成密码
|
||||
```powershell
|
||||
PS E:\Project\MeshRay> .\meshray.exe reset-password
|
||||
✅ 编译成功!
|
||||
新密码:oZb18/up9If/aCuQ
|
||||
```
|
||||
|
||||
### 测试 2: 指定密码
|
||||
```powershell
|
||||
PS E:\Project\MeshRay> .\meshray.exe reset-password -p "Test123!"
|
||||
✅ 编译成功!
|
||||
新密码:Test123!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🆚 对比
|
||||
|
||||
| 特性 | 旧方式 (独立工具) | 新方式 (集成命令) |
|
||||
|------|------------------|------------------|
|
||||
| **编译** | ❌ 需单独编译 | ✅ 无需额外编译 |
|
||||
| **文件数** | ❌ 2 个 exe 文件 | ✅ 1 个 exe 文件 |
|
||||
| **使用便利性** | ⭐⭐ | ⭐⭐⭐⭐⭐ |
|
||||
| **维护成本** | 高 | 低 |
|
||||
| **发现性** | 低(容易忘记) | 高(meshray 自带) |
|
||||
|
||||
---
|
||||
|
||||
## 📝 完整文档
|
||||
|
||||
详细文档请查看:[`README-重置密码.md`](file://e:/Project/MeshRay/README-重置密码.md)
|
||||
|
||||
---
|
||||
|
||||
## 💡 常见问题
|
||||
|
||||
### Q: 运行时才能用吗?
|
||||
|
||||
**A**: 是的!只要 `meshray.exe` 存在即可使用,无论是否在运行。
|
||||
|
||||
### Q: 会影响正在运行的服务吗?
|
||||
|
||||
**A**: 不会!密码立即生效,已登录的会话不受影响。
|
||||
|
||||
### Q: 还需要 reset-password.exe 吗?
|
||||
|
||||
**A**: ❌ 不需要了!已经集成到主程序中。
|
||||
|
||||
---
|
||||
|
||||
**更新完成!** 🎉
|
||||
Reference in New Issue
Block a user