路由鉴权
路由鉴权:鉴权,项目当中路由能不能被的权限的设置(某一个路由什么条件下可以访问、什么条件下不可以访问)
主要是设置路由守卫
在src目录下构建permisstion.ts文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| import router from '@/router' import setting from './setting'
import nprogress from 'nprogress'
import 'nprogress/nprogress.css' nprogress.configure({ showSpinner: false })
import useUserStore from './store/modules/user' import pinia from './store' const userStore = useUserStore(pinia)
router.beforeEach(async (to: any, from: any, next: any) => { document.title = `${setting.title} - ${to.meta.title}` nprogress.start() const token = userStore.token const username = userStore.username if (token) { if (to.path == '/login') { next({ path: '/' }) } else { if (username) { next() } else { try { await userStore.userInfo() next({ ...to }) } catch (error) { await userStore.userLogout() next({ path: '/login', query: { redirect: to.path } }) } } } } else { if (to.path == '/login') { next() } else { next({ path: '/login', query: { redirect: to.path } }) } } })
router.afterEach((to: any, from: any) => { nprogress.done() })
|
mock更改为真实接口
在vite.config.ts中进行设置
1 2 3 4 5 6 7 8 9 10 11 12 13
| server: { proxy: { [env.VITE_APP_BASE_API]: { target: env.VITE_SERVE, changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, ''), }, }, },
|
重新设置user.api
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import request from '@/utils/request' import type { loginFormData, loginResponseData, userInfoReponseData, } from './type'
enum API { LOGIN_URL = '/admin/acl/index/login', USERINFO_URL = '/admin/acl/index/info', LOGOUT_URL = '/admin/acl/index/logout', }
export const reqLogin = (data: loginFormData) => request.post<any, loginResponseData>(API.LOGIN_URL, data)
export const reqUserInfo = () => request.get<any, userInfoReponseData>(API.USERINFO_URL)
export const reqLogout = () => request.post<any, any>(API.LOGOUT_URL)
|