diff --git a/src/pages/login/page.vue b/src/pages/login/page.vue index ad2bdc7a..ea7cc85b 100644 --- a/src/pages/login/page.vue +++ b/src/pages/login/page.vue @@ -141,6 +141,16 @@ export default { username: this.formLogin.username, password: this.formLogin.password }) + .then(() => { + const redirect = this.$route.query.redirect + if (redirect) { + // 重定向到指定的页面 + this.$router.replace(redirect) + } else { + // 重定向到开始路径 + this.$router.replace('/') + } + }) } else { // 登录表单校验失败 this.$message.error('表单校验失败') diff --git a/src/router/index.js b/src/router/index.js index 241e6215..496b9504 100755 --- a/src/router/index.js +++ b/src/router/index.js @@ -36,12 +36,13 @@ router.beforeEach((to, from, next) => { if (token && token !== 'undefined') { next() } else { - // 将当前预计打开的页面完整地址临时存储 登录后继续跳转 - // 这个 cookie(redirect) 会在登录后自动删除 - util.cookies.set('redirect', to.fullPath) // 没有登录的时候跳转到登录界面 + // 携带上登陆成功之后需要跳转的页面完整路径 next({ - name: 'login' + name: 'login', + query: { + redirect: to.fullPath + } }) } } else { diff --git a/src/store/modules/d2admin/modules/account.js b/src/store/modules/d2admin/modules/account.js index b999e7a9..40f20df8 100644 --- a/src/store/modules/d2admin/modules/account.js +++ b/src/store/modules/d2admin/modules/account.js @@ -15,40 +15,36 @@ export default { login ({ dispatch }, { vm, username, - password, - route = { - path: '/' - } + password }) { - // 开始请求登录接口 - AccountLogin({ - username, - password + return new Promise((resolve, reject) => { + // 开始请求登录接口 + AccountLogin({ + username, + password + }) + .then(async res => { + // 设置 cookie 一定要存 uuid 和 token 两个 cookie + // 整个系统依赖这两个数据进行校验和存储 + // uuid 是用户身份唯一标识 用户注册的时候确定 并且不可改变 不可重复 + // token 代表用户当前登录状态 建议在网络请求中携带 token + // 如有必要 token 需要定时更新,默认保存一天 + util.cookies.set('uuid', res.uuid) + util.cookies.set('token', res.token) + // 设置 vuex 用户信息 + await dispatch('d2admin/user/set', { + name: res.name + }, { root: true }) + // 用户登录后从持久化数据加载一系列的设置 + await dispatch('load') + // 结束 + resolve() + }) + .catch(err => { + console.log('err: ', err) + reject(err) + }) }) - .then(async res => { - // 设置 cookie 一定要存 uuid 和 token 两个 cookie - // 整个系统依赖这两个数据进行校验和存储 - // uuid 是用户身份唯一标识 用户注册的时候确定 并且不可改变 不可重复 - // token 代表用户当前登录状态 建议在网络请求中携带 token - // 如有必要 token 需要定时更新,默认保存一天 - util.cookies.set('uuid', res.uuid) - util.cookies.set('token', res.token) - // 设置 vuex 用户信息 - await dispatch('d2admin/user/set', { - name: res.name - }, { root: true }) - // 用户登录后从持久化数据加载一系列的设置 - await dispatch('load') - // 更新路由 尝试去获取 cookie 里保存的需要重定向的页面完整地址 - const path = util.cookies.get('redirect') - // 根据是否存有重定向页面判断如何重定向 - vm.$router.replace(path ? { path } : route) - // 删除 cookie 中保存的重定向页面 - util.cookies.remove('redirect') - }) - .catch(err => { - console.log('err: ', err) - }) }, /** * @description 注销用户并返回登录页面