/** * login.js - 登录页逻辑(滑块验证 + 表单提交 + 找回密码) */ $(function () { var sliderToken = null; var slider = new SliderVerify('#slider', function (token) { sliderToken = token; $('#login-btn').prop('disabled', false); }); // 未登录场景:先从 auth/csrf.php 取会话绑定的 CSRF Token,写接口统一携带 window.CSRF_TOKEN = ''; $.getJSON(BASE_URL + 'auth/csrf.php').done(function (resp) { if (resp && resp.code === 0 && resp.data && resp.data.csrf_token) { window.CSRF_TOKEN = resp.data.csrf_token; } }); // 回车提交 $('#password').on('keydown', function (e) { if (e.keyCode === 13) doLogin(); }); $('#login-btn').on('click', doLogin); function csrfHeaders() { return { 'X-Requested-With': 'XMLHttpRequest', 'X-CSRF-Token': window.CSRF_TOKEN || '' }; } function doLogin() { var username = $.trim($('#username').val()); var password = $('#password').val(); if (!username) { showMsg('请输入账号', 'error'); return; } if (!password) { showMsg('请输入密码', 'error'); return; } if (!sliderToken) { showMsg('请先完成滑块验证', 'error'); return; } $.ajax({ url: BASE_URL + 'auth/login.php', method: 'POST', dataType: 'json', headers: csrfHeaders(), data: { username: username, password: password, slider_token: sliderToken } }).done(function (resp) { if (resp.code === 0) { showMsg('登录成功,正在跳转...', 'success'); setTimeout(function () { location.href = 'dashboard.html'; }, 500); } else { showMsg(resp.msg || '登录失败', 'error'); slider.reset(); sliderToken = null; $('#login-btn').prop('disabled', true); } }).fail(function () { showMsg('网络错误,请重试', 'error'); }); } function showMsg(msg, type) { $('#login-msg').attr('class', 'login-msg ' + type).text(msg); } // 找回密码弹窗 $('#btn-forgot').on('click', function () { var idx = layer.open({ type: 1, title: '找回密码', area: ['380px', 'auto'], content: '