diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json new file mode 100644 index 0000000000000000000000000000000000000000..f8b4888565caadc7510be75682268d6c18edd6de --- /dev/null +++ b/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000000000000000000000000000000000000..9e5cf3b5ebc338016e2017a1bea4c31ba25a35ae --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,13 @@ +{ + "ExpandedNodes": [ + "", + "\\小叶子", + "\\徐晓倩", + "\\林华铭", + "\\王俊", + "\\王现辉", + "\\程博文" + ], + "SelectedNode": "\\程博文\\permission.js", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/permission-system-route/v16/.suo b/.vs/permission-system-route/v16/.suo new file mode 100644 index 0000000000000000000000000000000000000000..e478f1f08de01c8a59f81a86ca371749efd77252 Binary files /dev/null and b/.vs/permission-system-route/v16/.suo differ diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..2790e813a074f705e571f7af28a680bee025b400 Binary files /dev/null and b/.vs/slnx.sqlite differ diff --git "a/\345\221\250\344\270\200\345\270\206/.gitignore" "b/\345\221\250\344\270\200\345\270\206/.gitignore" new file mode 100644 index 0000000000000000000000000000000000000000..0511e2b51f0d42d1dff69f4ed5df03c6649ca356 --- /dev/null +++ "b/\345\221\250\344\270\200\345\270\206/.gitignore" @@ -0,0 +1,5 @@ +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json diff --git "a/\345\221\250\344\270\200\345\270\206/permission.js" "b/\345\221\250\344\270\200\345\270\206/permission.js" new file mode 100644 index 0000000000000000000000000000000000000000..446d5f56ca6c6a3f5a350d151b4f2323075645f4 --- /dev/null +++ "b/\345\221\250\344\270\200\345\270\206/permission.js" @@ -0,0 +1,86 @@ +import router from './router' +import store from './store' +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 { + 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() +}) +