From 43bc0ca39be664ffaeea6256a9f2160f5a8f7e40 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: Sat, 01 Aug 2020 18:28:30 +0800
Subject: [PATCH] OAuth自动刷新续签Token

---
 ruoyi-ui/src/store/modules/user.js |   32 ++++++++++++++++++++++++++++++--
 1 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/ruoyi-ui/src/store/modules/user.js b/ruoyi-ui/src/store/modules/user.js
index 5c8a33f..c097710 100644
--- a/ruoyi-ui/src/store/modules/user.js
+++ b/ruoyi-ui/src/store/modules/user.js
@@ -1,9 +1,10 @@
-import { login, logout, getInfo } from '@/api/login'
-import { getToken, setToken, removeToken } from '@/utils/auth'
+import { login, logout, getInfo, refreshToken } from '@/api/login'
+import { getToken, getRefreshToken, setToken, setRefreshToken, setExpiresIn, removeToken } from '@/utils/auth'
 
 const user = {
   state: {
     token: getToken(),
+    refresh_token: getRefreshToken(),
     name: '',
     avatar: '',
     roles: [],
@@ -13,6 +14,12 @@
   mutations: {
     SET_TOKEN: (state, token) => {
       state.token = token
+    },
+    SET_EXPIRES_IN: (state, time) => {
+      state.expires_in = time
+    },
+    SET_REFRESH_TOKEN: (state, token) => {
+      state.refresh_token = token
     },
     SET_NAME: (state, name) => {
       state.name = name
@@ -39,6 +46,10 @@
         login(username, password, code, uuid).then(res => {
           setToken(res.access_token)
           commit('SET_TOKEN', res.access_token)
+          setRefreshToken(res.refresh_token)
+          commit('SET_REFRESH_TOKEN', res.refresh_token)
+          setExpiresIn(res.expires_in)
+          commit('SET_EXPIRES_IN', res.expires_in)
           resolve()
         }).catch(error => {
           reject(error)
@@ -67,6 +78,23 @@
       })
     },
     
+    // 刷新token
+    RefreshToken({commit, state}) {
+      return new Promise((resolve, reject) => {
+        refreshToken(state.refresh_token).then(res => {
+          setToken(res.access_token)
+          commit('SET_TOKEN', res.access_token)
+          setRefreshToken(res.refresh_token)
+          commit('SET_REFRESH_TOKEN', res.refresh_token)
+          setExpiresIn(res.expires_in)
+          commit('SET_EXPIRES_IN', res.expires_in)
+          resolve()
+        }).catch(error => {
+          reject(error)
+        })
+      })
+    },
+    
     // 退出系统
     LogOut({ commit, state }) {
       return new Promise((resolve, reject) => {

--
Gitblit v1.9.3