From 0c614dbb875510260adc01ab8a023d910daad21e Mon Sep 17 00:00:00 2001 From: unknown <2905980497@qq.com> Date: Sun, 26 Jul 2020 19:47:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.gitignore" | 5 ++ .../permission.js" | 90 +++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 "\347\250\213\345\215\232\346\226\207/.gitignore" create mode 100644 "\347\250\213\345\215\232\346\226\207/permission.js" diff --git "a/\347\250\213\345\215\232\346\226\207/.gitignore" "b/\347\250\213\345\215\232\346\226\207/.gitignore" new file mode 100644 index 0000000..0511e2b --- /dev/null +++ "b/\347\250\213\345\215\232\346\226\207/.gitignore" @@ -0,0 +1,5 @@ +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json diff --git "a/\347\250\213\345\215\232\346\226\207/permission.js" "b/\347\250\213\345\215\232\346\226\207/permission.js" new file mode 100644 index 0000000..6d91d39 --- /dev/null +++ "b/\347\250\213\345\215\232\346\226\207/permission.js" @@ -0,0 +1,90 @@ +import router from './router' +import store from './store' +//import { Message } from 'element-ui' +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' +import { getToken } from '@/utils/auth' +import getPageTitle from '@/utils/get-page-title' +import { canTurnTo } from '@/utils/access' +import { has } from 'core-js/fn/dict' + +NProgress.configure({ showSpinner: false }) + + +const turnTo = (to, access, next) => { + var can = canTurnTo(to.name, access, router.options.routes) + if (can) next() + else next({ replace: true, name: 'error_401' }) +} + +router.beforeEach(async (to, from, next) => { + NProgress.start() + + document.title = getPageTitle(to.meta.title) + + const hasToken = getToken() + if (hasToken) { + console.log(to.path) + if (to.path === '/login') { + next({ path: '/' }) + NProgress.done() + } else { + var userInfo = store.state.user.name + if (userInfo) { + turnTo(to, store.state.user.access, next) + } else { + console.log('登录成功,已经有token,', + '但是还没有用户信息,准备获用户信息') + store.dispatch('user/getInfo').then(user => { + turnTo(to, user.access, next) + console.log(next()) + }) + .catch(() => { + console.log('获取 失败!!') + store.dispatch('user/resetToken') + next('/login') + }) + } + } + } + else { + /* has no token*/ + + if (to.path === '/login') { + // in the free login whitelist, go directly + next() + } else { + // other pages that do not have permission to access are redirected to the login page. + next(`/login`) + NProgress.done() + } + } +}) +//伪代码 + +// var hasToken = 获取令牌() + +// if(hasToken){ +// if(登录成功){ +// 前往主页 +// }else{ +// var userInfo = 获取用户名() +// if(userInfo){ +// 前往下一级路由 +// }else{ +// 获取用户信息().then(()=>{ +// 前往下一级路由 +// }).catch(()=>{ +// 刷新令牌信息() +// 回到登录页面 +// }) +// } +// } +// }else{ +// 返回登录页面 +// } + +router.afterEach(() => { + NProgress.done() +}) + -- Gitee