Procházet zdrojové kódy

fix: 处理获取用户接口调用时机

lanjianrong před 5 roky
rodič
revize
7390fe2290
4 změnil soubory, kde provedl 16 přidání a 7 odebrání
  1. 0 6
      config/routes.js
  2. 3 1
      src/models/login.js
  3. 10 0
      src/models/user.js
  4. 3 0
      src/pages/user/login/index.jsx

+ 0 - 6
config/routes.js

@@ -37,12 +37,6 @@ export default [
                 name: 'workbench',
                 icon: 'list',
                 component: './workbench/Dashboard'
-              },
-              {
-                path: '/workbench/admin',
-                name: 'admin',
-                component: './Admin',
-                authority: ['admin']
               }
             ]
           },

+ 3 - 1
src/models/login.js

@@ -5,7 +5,7 @@ import { apiLogin } from '@/services/login'
 import { getPageQuery } from '@/utils/utils'
 import { message } from 'antd'
 import consts from '@/consts'
-import { saveTokenId } from '@/basic/utils/common'
+import { removeTokenId, saveTokenId } from '@/basic/utils/common'
 
 const Model = {
   namespace: 'login',
@@ -24,6 +24,7 @@ const Model = {
 
       if (response && response.code === consts.RET_CODE.SUCCESS) {
         saveTokenId(response.data.token)
+        yield put({ type: 'user/fetchCurrent' })
         const urlParams = new URL(window.location.href)
         const params = getPageQuery()
         message.success('🎉 🎉 🎉  登录成功')
@@ -51,6 +52,7 @@ const Model = {
       const { redirect } = getPageQuery() // Note: There may be security issues, please note
 
       if (window.location.pathname !== '/user/login' && !redirect) {
+        removeTokenId()
         history.replace({
           pathname: '/user/login',
           search: stringify({

+ 10 - 0
src/models/user.js

@@ -1,5 +1,7 @@
+import { getTokenid } from '@/basic/utils/common'
 import consts from '@/consts'
 import { apiCurrent } from '@/services/user'
+import { history } from 'umi'
 
 const UserModel = {
   namespace: 'user',
@@ -16,6 +18,14 @@ const UserModel = {
     // },
 
     *fetchCurrent(_, { call, put }) {
+      if (window.location.pathname === '/user/login') {
+        return
+      }
+      const token = getTokenid()
+      if (!token) {
+        history.replace('/user/login')
+        return
+      }
       const response = yield call(apiCurrent)
       if (response?.code === consts.RET_CODE.SUCCESS) {
         yield put({

+ 3 - 0
src/pages/user/login/index.jsx

@@ -30,6 +30,9 @@ const Login = props => {
       type: 'login/login',
       payload: { ...values, type }
     })
+    // dispatch({
+    //   type: 'user/fetchCurrent'
+    // })
   }
 
   return (