diff --git a/oms_web/oms_vue/src/api/login.js b/oms_web/oms_vue/src/api/login.js index 186420d9..59a829a2 100644 --- a/oms_web/oms_vue/src/api/login.js +++ b/oms_web/oms_vue/src/api/login.js @@ -1,5 +1,11 @@ import request from '@/utils/request' +function createLoginFormData(data) { + const formData = new FormData() + Object.keys(data).forEach(key => formData.append(key, data[key])) + return formData +} + // 登录方法 - 基于 Session 认证,使用 FormData 格式 export function login(username, password, code, rememberMe) { const formData = new FormData() @@ -9,6 +15,41 @@ export function login(username, password, code, rememberMe) { formData.append('rememberMe', rememberMe || false) return request({ url: '/login', + headers: { + isToken: false, + 'Content-Type': 'multipart/form-data', + repeatSubmit: false, + allowWarning: true + }, + method: 'post', + data: formData + }) +} + +export function resetLoginPwd(data) { + const formData = createLoginFormData({ + username: data.username, + oldPassword: data.oldPassword, + newPassword: data.newPassword, + confirmPassword: data.confirmPassword, + emailCode: data.emailCode + }) + return request({ + url: '/login/resetPwd', + headers: { + isToken: false, + 'Content-Type': 'multipart/form-data', + repeatSubmit: false + }, + method: 'post', + data: formData + }) +} + +export function sendResetPwdEmailCode(username) { + const formData = createLoginFormData({ username }) + return request({ + url: '/login/sendResetPwdEmailCode', headers: { isToken: false, 'Content-Type': 'multipart/form-data', diff --git a/oms_web/oms_vue/src/store/modules/user.js b/oms_web/oms_vue/src/store/modules/user.js index 71852f98..f4cb14c3 100644 --- a/oms_web/oms_vue/src/store/modules/user.js +++ b/oms_web/oms_vue/src/store/modules/user.js @@ -52,7 +52,7 @@ const user = { const rememberMe = userInfo.rememberMe return new Promise((resolve, reject) => { login(username, password, code, rememberMe).then(res => { - resolve() + resolve(res) }).catch(error => { reject(error) }) @@ -60,17 +60,16 @@ const user = { }, // 获取用户信息 - GetInfo({ commit, state }) { + GetInfo({ commit }) { return new Promise((resolve, reject) => { getInfo().then(res => { - // 后端返回的数据在 res.data 中 const data = res.data || res const user = data.user - let avatar = user.avatar? '/common/download/resource?resource='+encodeURIComponent(user.avatar) : "" + let avatar = user.avatar ? '/common/download/resource?resource=' + encodeURIComponent(user.avatar) : "" if (!isHttp(avatar)) { avatar = (isEmpty(avatar)) ? defAva : process.env.VUE_APP_BASE_API + avatar } - if (data.roles && data.roles.length > 0) { // 验证返回的roles是否是一个非空数组 + if (data.roles && data.roles.length > 0) { commit('SET_ROLES', data.roles) commit('SET_PERMISSIONS', data.permissions) } else { @@ -82,15 +81,13 @@ const user = { commit('SET_NAME', user.loginName) commit('SET_NICK_NAME', user.userName) commit('SET_AVATAR', avatar) - /* 初始密码提示 */ - if(data.isDefaultModifyPwd) { - MessageBox.confirm('您的密码还是初始密码,请修改密码!', '安全提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { + if (data.isDefaultModifyPwd) { + MessageBox.confirm('您的密码还是初始密码,请修改密码!', '安全提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { router.push({ name: 'Profile', params: { activeTab: 'resetPwd' } }) }).catch(() => {}) } - /* 过期密码提示 */ - if(!data.isDefaultModifyPwd && data.isPasswordExpired) { - MessageBox.confirm('您的密码已过期,请尽快修改密码!', '安全提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { + if (!data.isDefaultModifyPwd && data.isPasswordExpired) { + MessageBox.confirm('您的密码已过期,请尽快修改密码!', '安全提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { router.push({ name: 'Profile', params: { activeTab: 'resetPwd' } }) }).catch(() => {}) } @@ -102,7 +99,7 @@ const user = { }, // 退出系统 - 基于 Session 认证 - LogOut({ commit, state }) { + LogOut({ commit }) { return new Promise((resolve, reject) => { logout().then(() => { commit('SET_ROLES', []) diff --git a/oms_web/oms_vue/src/utils/request.js b/oms_web/oms_vue/src/utils/request.js index e8d13767..3d3e027e 100644 --- a/oms_web/oms_vue/src/utils/request.js +++ b/oms_web/oms_vue/src/utils/request.js @@ -110,6 +110,8 @@ service.interceptors.response.use(res => { } else if (code === 601) { Message({ message: msg, type: 'warning' }) return Promise.reject('error') + } else if (code === 301 && res.config.headers && res.config.headers.allowWarning) { + return res.data } else if (code !== 200) { Notification.error({ title: msg }) return Promise.reject('error') diff --git a/oms_web/oms_vue/src/views/login.vue b/oms_web/oms_vue/src/views/login.vue index 6b2f50ba..a08f16d8 100644 --- a/oms_web/oms_vue/src/views/login.vue +++ b/oms_web/oms_vue/src/views/login.vue @@ -54,6 +54,37 @@ + + + + + + + + + + + + + + + {{ emailCodeCountdown > 0 ? emailCodeCountdown + '秒后重发' : '发送验证码' }} + + +
密码长度8-20位,需包含大小写字母、数字、特殊字符
+
+ +