固化默认登录凭据为 admin/666666(保留 env 覆盖)
This commit is contained in:
+3
-3
@@ -7,7 +7,7 @@
|
||||
* PORT 监听端口(默认 3000)
|
||||
* DATA_DIR SQLite 数据目录(默认 backend/data)
|
||||
* VCM_USERNAME 面板登录账号(默认 admin)
|
||||
* VCM_PASSWORD 面板登录密码(默认 admin123,Docker 部署务必通过 compose 覆盖)
|
||||
* VCM_PASSWORD 面板登录密码(默认 666666,Docker 部署务必通过 compose 覆盖)
|
||||
* UV_THREADPOOL_SIZE libuv IO 线程池大小(默认 4 → 8:扫描/stat/readFile 并发更高,NAS 四核安全)
|
||||
*/
|
||||
// 必须在 libuv 线程池首次使用前设置:扫描大量目录/文件时默认 4 线程是主要瓶颈
|
||||
@@ -198,7 +198,7 @@ function buildPackages(keyword = '') {
|
||||
|
||||
// —— 登录鉴权:内置账号(Docker 部署通过 VCM_USERNAME/VCM_PASSWORD 环境变量覆盖) ——
|
||||
const AUTH_USERNAME = process.env.VCM_USERNAME || 'admin'
|
||||
const AUTH_PASSWORD = process.env.VCM_PASSWORD || 'admin123'
|
||||
const AUTH_PASSWORD = process.env.VCM_PASSWORD || '666666'
|
||||
const SESSION_TTL_MS = 12 * 3600_000 // 会话有效期 12 小时,防长期 token 泄漏
|
||||
const LOGIN_LOCK = { failures: 3, windowMs: 5 * 60_000, lockMs: 15 * 60_000 } // 3 次失败锁 15 分钟
|
||||
const sessions = new Map() // token -> { name, at, exp };内存态,进程重启后需重新登录
|
||||
@@ -596,7 +596,7 @@ app.listen(PORT, () => {
|
||||
const mode = isDemoMode() ? 'demo' : 'storage'
|
||||
if (!process.env.VCM_PASSWORD) {
|
||||
console.warn(
|
||||
'[auth] ⚠ 未设置 VCM_PASSWORD 环境变量,正在使用默认口令 admin123。' +
|
||||
'[auth] ⚠ 未设置 VCM_PASSWORD 环境变量,正在使用默认口令 666666。' +
|
||||
'生产部署请务必通过 docker-compose 的环境变量覆盖,否则面板可被任意登录!',
|
||||
)
|
||||
}
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ services:
|
||||
- PORT=3000
|
||||
- TZ=Asia/Shanghai # 每日 00:00 自动扫描按北京时间执行
|
||||
- VCM_USERNAME=${VCM_USERNAME:-admin} # 面板登录账号(可在宿主机 .env 覆盖)
|
||||
- VCM_PASSWORD=${VCM_PASSWORD:-admin123} # 面板登录密码(务必改为强密码)
|
||||
- VCM_PASSWORD=${VCM_PASSWORD:-666666} # 面板登录密码(默认 666666,可在宿主机 .env 覆盖)
|
||||
- UV_THREADPOOL_SIZE=8 # libuv IO 线程池(默认4→8):扫描/stat 并发更高,NAS 四核安全
|
||||
volumes:
|
||||
- "/volume2/docker/verdaccio_verdaccio-1/verdaccio_storage:/verdaccio/storage" # Verdaccio 缓存目录(读写,清理需要)
|
||||
|
||||
@@ -87,7 +87,7 @@ const api = {
|
||||
async login(username, password, remember = true) {
|
||||
if (USE_MOCK) {
|
||||
await delay(400)
|
||||
if (username !== 'admin' || password !== 'admin123') return { ok: false, message: '用户名或密码错误' }
|
||||
if (username !== 'admin' || password !== '666666') return { ok: false, message: '用户名或密码错误' }
|
||||
const token = `mock-${Date.now()}`
|
||||
if (remember) storage.set(TOKEN_KEY, token)
|
||||
else storage.setSession(TOKEN_KEY, token)
|
||||
|
||||
@@ -8,8 +8,8 @@ const router = useRouter()
|
||||
const route = useRoute()
|
||||
const { theme, toggle } = useTheme()
|
||||
|
||||
const username = ref('')
|
||||
const password = ref('')
|
||||
const username = ref('admin')
|
||||
const password = ref('666666')
|
||||
const remember = ref(true)
|
||||
const loading = ref(false)
|
||||
|
||||
@@ -60,7 +60,7 @@ async function login() {
|
||||
<button class="login-btn" :disabled="loading" @click="login">
|
||||
{{ loading ? '登录中…' : '🚀 登 录' }}
|
||||
</button>
|
||||
<div class="login-tip">默认账号 admin · 密码 admin123(Docker 部署可通过环境变量修改)</div>
|
||||
<div class="login-tip">默认账号 admin · 密码 666666(Docker 部署可通过环境变量修改)</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user