Files
weidian/templates/login.html
Jeason 6ab6666cac feat: 添加登录认证,防止未授权访问
- 访问任何页面需先输入密码登录
- session有效期7天,无需频繁登录
- 密码通过环境变量ADMIN_PASSWORD配置,默认admin123
- 导航栏添加退出按钮
- 放行/login和/static及socket.io路径
2026-04-02 10:46:46 +08:00

48 lines
2.3 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>登录 - 微店抢购管理</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet">
<style>
body { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh;
display: flex; align-items: center; justify-content: center;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }
.login-card { width: 360px; border-radius: 18px; border: none;
box-shadow: 0 8px 40px rgba(0,0,0,.2); }
.login-header { text-align: center; padding: 2rem 2rem 1rem; }
.login-header i { font-size: 2.5rem; color: #667eea; }
.login-header h4 { margin-top: .8rem; font-weight: 600; color: #333; }
.login-body { padding: 0 2rem 2rem; }
.form-control { border-radius: 10px; padding: .6rem 1rem; }
.form-control:focus { border-color: #667eea; box-shadow: 0 0 0 .2rem rgba(102,126,234,.15); }
.btn-login { background: linear-gradient(135deg, #667eea, #764ba2); border: none;
border-radius: 10px; padding: .6rem; font-weight: 500; width: 100%; }
.btn-login:hover { opacity: .9; }
.alert { border-radius: 10px; font-size: .85rem; }
</style>
</head>
<body>
<div class="card login-card">
<div class="login-header">
<i class="bi bi-lightning-charge-fill"></i>
<h4>微店抢购管理</h4>
</div>
<div class="login-body">
{% if error %}
<div class="alert alert-danger py-2">{{ error }}</div>
{% endif %}
<form method="POST">
<div class="mb-3">
<input type="password" class="form-control" name="password"
placeholder="请输入访问密码" autofocus required>
</div>
<button type="submit" class="btn btn-primary btn-login">登 录</button>
</form>
</div>
</div>
</body>
</html>