# vben **Repository Path**: mqwxyg/vben ## Basic Information - **Project Name**: vben - **Description**: 通过vben-admin-thin-next创建的项目 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: 2.5.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-03 - **Last Updated**: 2021-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 缓存 > settings/encryptionSetting.ts中enableStorageEncryption属性,判断是否进行加密 permissionCacheType:用于判断全局的缓存机制,是否使用local,还是session #### 登录 > 1、登录前首先获取localStorage中存储的登录信息(如果上次登录,记住密码打钩的话,可以获取到上次登录的信息); >2、绑定到登录界面,数据校验在useLogin.ts中, >3、登录成功后 ,缓存token,根据返回的userId,获取完整的user信息进行缓存,跳转主页 (modules/user.ts/actions/login) > 跳转前触发路由守卫,token存在。则获取btn权限数组和menu,获取成功后,将menu加载到系统路由中。跳转页面; >4、判断loginUser中的auto是否是true,如果是true,将登录信息重新写入localStorage中; #### 异步加载路由菜单 > 1.src/settings/projectSetting.ts / permissionMode: PermissionModeEnum.BACK, 启用后台路由 ; > 2. /@/store/modules/permission.ts 中 buildRoutesAction 方法中 进行网络路由的获取; #### 请求的统一处理 >由于后台furion,对异常进行了统一封装。当C#代码发生问题,或者token校验没有通过是,进行了统一的友好异常处理 > ,因此,重新对前台的请求的返回数据结构,按照furion的异常结构,重新封装; > /@/util/http/axios/types.ts/interface Result > > 重写checkStatus.ts 统一返回错误提示,使用createErrorModal统一封装错误提示,废弃 /@/util/http/axios/index:190行errorMessageMode的属性 > > 重写/@/util/http/axios/index/transform/transformRequestHook和responseInterceptorsCatch方法, > transformRequestHook:处理正常的请求(包含furion友好异常的数据返回) > responseInterceptorsCatch:处理出错的请求(只针对http出错) > #### 路由守卫 /@/router/guard/permissionGuard.ts #### 登录跳转 路由流程; > 1、浏览器地址 http://localhost:3100/ 或者 http://localhost:3100/#/login > 路由从 / ----> login > 登录后 $\color{red}{((await router.replace(PageEnum.BASE_HOME))}$ 代码触发跳转是首页),/login ----> /dashboard > 路由守卫,开始判断是否有token,是否需要联网获取menu,如果是则 获取menu,将menu加载到路由,重定向到 /dashboard > 路由又从/login ----> /dashboard ,有token,不需要联网menu,直接跳转到主页面; > 所有路由守卫,会监听到两次 /login ----> /dashboard