离校前端框架,包括数据字典、工作队伍、新闻公告模块
diff --git a/leave-school-vue/src/permission.js b/leave-school-vue/src/permission.js
new file mode 100644
index 0000000..d2e4ead
--- /dev/null
+++ b/leave-school-vue/src/permission.js
@@ -0,0 +1,41 @@
+import router from './router'
+import store from './store'
+import NProgress from 'nprogress' // Progress 进度条
+import 'nprogress/nprogress.css'// Progress 进度条样式
+import { Message } from 'element-ui'
+import { getToken } from '@/utils/auth' // 验权
+
+const whiteList = ['/login'] // 不重定向白名单
+router.beforeEach((to, from, next) => {
+ NProgress.start()
+ if (getToken()) {
+ if (to.path === '/login') {
+ next({ path: '/' })
+ NProgress.done() // if current page is dashboard will not trigger afterEach hook, so manually handle it
+ } else {
+ if (store.getters.roles.length === 0) {
+ store.dispatch('GetInfo').then(res => { // 拉取用户信息
+ next()
+ }).catch((err) => {
+ store.dispatch('FedLogOut').then(() => {
+ Message.error(err || '验证失败,请重新登录')
+ next({ path: '/' })
+ })
+ })
+ } else {
+ next()
+ }
+ }
+ } else {
+ if (whiteList.indexOf(to.path) !== -1) {
+ next()
+ } else {
+ next('/login')
+ NProgress.done()
+ }
+ }
+})
+
+router.afterEach(() => {
+ NProgress.done() // 结束Progress
+})