Forráskód Böngészése

0.0.6

完成登录和退出关于token的储存和清理的功能。
Sean 6 hónapja
szülő
commit
71a2d5731a

BIN
src/assets/public/nav/Home.png


BIN
src/assets/public/nav/notice.png


BIN
src/assets/public/sidebar/default/2 User.png


BIN
src/assets/public/sidebar/default/Folder.png


BIN
src/assets/public/sidebar/default/accessibility-outline.png


BIN
src/assets/public/sidebar/default/compass-outline.png


BIN
src/assets/public/sidebar/select/2 User.png


BIN
src/assets/public/sidebar/select/Discovery.png


BIN
src/assets/public/sidebar/select/index.png


+ 7 - 2
src/layout/components/Navbar.vue

@@ -84,8 +84,13 @@ export default {
     toggleSideBar() {
       this.$store.dispatch('app/toggleSideBar')
     },
-    async logout() {
-      await this.$store.dispatch('user/logout')
+    // async logout() {
+    //   await this.$store.dispatch('user/logout')
+    //   this.$router.push(`/login?redirect=${this.$route.fullPath}`)
+    // }
+    logout(){
+      //调用store中的退出
+      this.$store.commit('user/LOGOUT')
       this.$router.push(`/login?redirect=${this.$route.fullPath}`)
     }
   }

+ 27 - 20
src/store/modules/user.js

@@ -25,6 +25,13 @@ const mutations = {
   },
   SET_ROLES: (state, roles) => {
     state.roles = roles
+  },
+  // 退出登录逻辑直接放在 mutations 中
+  LOGOUT(state) {
+    state.token = ''
+    state.roles = []
+    removeToken()
+    resetRouter()
   }
 }
 
@@ -36,7 +43,7 @@ const actions = {
       login({ username: username.trim(), password: password, type: type, captcha: captcha.trim() }).then(response => {
         const { data } = response
         commit('SET_TOKEN', data.token)
-        setToken(data.token)
+        setToken(data.token,data.exp)
         resolve(response)
       }).catch(error => {
         reject(error)
@@ -73,24 +80,24 @@ const actions = {
   },
 
   // 用户退出
-  logout({ commit, state, dispatch }) {
-    return new Promise((resolve, reject) => {
-      logout(state.token).then(() => {
-        commit('SET_TOKEN', '')
-        commit('SET_ROLES', [])
-        removeToken()
-        resetRouter()
-
-        // reset visited views and cached views
-        // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485
-        dispatch('tagsView/delAllViews', null, { root: true })
-
-        resolve()
-      }).catch(error => {
-        reject(error)
-      })
-    })
-  },
+  // logout({ commit, state, dispatch }) {
+  //   return new Promise((resolve, reject) => {
+  //     logout(state.token).then(() => {
+  //       commit('SET_TOKEN', '')
+  //       commit('SET_ROLES', [])
+  //       removeToken()
+  //       resetRouter()
+
+  //       // 重置已经访问过的视图
+  //       // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485
+  //       dispatch('tagsView/delAllViews', null, { root: true })
+
+  //       resolve()
+  //     }).catch(error => {
+  //       reject(error)
+  //     })
+  //   })
+  // },
 
   // 清理token
   resetToken({ commit }) {
@@ -102,7 +109,7 @@ const actions = {
     })
   },
 
-  // 当用户切换时,我们都是退出去再重新进,所以这个暂时用不到
+  // 用户切换时重置路由
   async changeRoles({ commit, dispatch }, role) {
     const token = role + '-token'
 

+ 8 - 2
src/utils/auth.js

@@ -6,10 +6,16 @@ export function getToken() {
   return Cookies.get(TokenKey)
 }
 
-export function setToken(token) {
-  return Cookies.set(TokenKey, token)
+export function setToken(token,exp) {
+  const expdays = convertSecondsToDays(exp)
+  return Cookies.set(TokenKey, token, { expires: expdays })
 }
 
 export function removeToken() {
   return Cookies.remove(TokenKey)
 }
+
+//把秒转换成天
+function convertSecondsToDays(seconds) {
+  return seconds/(60*60*24); //1天=60秒*60分钟*24小时
+}

+ 1 - 1
src/views/login/index.vue

@@ -123,7 +123,7 @@ export default {
     // 本页基础数据
     return {
       loginForm: { // 1.用户使用哪些信息登录
-        username: '', // 1
+        username: '', // 15210211200
         password: '', // 111111
         type: 1, //1=账号密码登录
         captcha: ''