提交 61af6c74 编写于 作者: kadycui's avatar kadycui 💻

ADD: 登录调整

上级 10f58c0d
......@@ -43,9 +43,8 @@
<script setup>
import { reactive, ref } from 'vue'
import { useStore} from 'vuex'
import { useStore } from 'vuex'
import { useRouter } from 'vue-router'
import { login, getInfo } from '@/api/manager'
import { setToken } from '@/composeables/auth'
import { toast } from '@/composeables/util'
......@@ -94,30 +93,12 @@ const onSubmit = () => {
return false
}
loading.value = true
login(form.username, form.password)
.then(res => {
console.log(res)
// 提示成功
toast("登录成功")
// 存储token和用户相关信息
setToken(res.token)
// 获取管理员信息
getInfo()
.then(res2 => {
store.commit("SET_USERINFO", res2)
console.log(res2)
})
// 跳转到首页
router.push("/")
})
store.dispatch("login", form).then(res => {
toast("登录成功")
router.push("/")
})
.finally(() => {
loading.value = false
})
......
import router from "@/router"
import { getToken } from "@/composeables/auth"
import { toast } from "@/composeables/util"
import store from "./store"
// 全局前置守卫
router.beforeEach((to, from, next) => {
router.beforeEach(async (to, from, next) => {
console.log("全局前置守卫")
const token = getToken()
......@@ -20,6 +21,14 @@ router.beforeEach((to, from, next) => {
return next({ path: from.path ? from.path : "/" })
}
// 如果用户登录, 自动获取用户信息, 并存储在vuex中
if(token){
await store.dispatch("getinfo")
}
next()
})
\ No newline at end of file
import { createStore } from 'vuex'
import { login, getInfo } from '@/api/manager'
import { setToken } from '@/composeables/auth'
// 创建一个新的 store 实例
......@@ -6,18 +9,38 @@ const store = createStore({
state() {
return {
// 用户信息
user:{}
user: {}
}
},
mutations: {
// 记录用户信息
SET_USERINFO(state, user){
SET_USERINFO(state, user) {
state.user = user
}
},
actions: {
// 登录
login({ commit }, { username, password }) {
return new Promise((resolve, reject) => {
login(username, password).then(res => {
setToken(res.token)
resolve(res)
}).catch(err => reject(err))
})
},
// 获取当前登录用户信息
getinfo({ commit }) {
return new Promise((resolve, reject) => {
getInfo().then(res => {
commit("SET_USERINFO", res)
resolve(res)
}).catch(err => reject(err))
})
}
}
})
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册