diff --git a/src/pages.json b/src/pages.json index e80d2f9..364a268 100644 --- a/src/pages.json +++ b/src/pages.json @@ -53,6 +53,12 @@ "type": "page", "style": { "navigationBarTitleText": "关于" + }, + "excludeLoginPath": true, + "roleAuth": { + "field": "role", + "value": "admin", + "redirect": "/pages/auth/403" } }, { diff --git a/src/pages/about/about.vue b/src/pages/about/about.vue index 72f8809..ab04ed2 100644 --- a/src/pages/about/about.vue +++ b/src/pages/about/about.vue @@ -9,6 +9,14 @@ definePage({ style: { navigationBarTitleText: '关于', }, + // 登录授权(可选):跟以前的 needLogin 类似功能,但是同时支持黑白名单,详情请见 arc/router 文件夹 + excludeLoginPath: true, + // 角色授权(可选):如果需要根据角色授权,就配置这个 + roleAuth: { + field: 'role', + value: 'admin', + redirect: '/pages/auth/403', + }, }) // 浏览器打印 isH5为true, isWeb为false,大家尽量用 isH5 diff --git a/src/router/README.md b/src/router/README.md index 4b25351..3854a85 100644 --- a/src/router/README.md +++ b/src/router/README.md @@ -15,12 +15,12 @@ 比如大部分2B和后台管理类的应用,比如企业微信、钉钉、飞书、内部报表系统、CMS系统等,都需要登录,只有登录后,才能使用。 -### EXCLUDE_PAGE_LIST -`EXCLUDE_PAGE_LIST` 表示排除的路由列表。 +### EXCLUDE_LOGIN_PATH_LIST +`EXCLUDE_LOGIN_PATH_LIST` 表示排除的路由列表。 -在 `默认无需登录策略: DEFAULT_NO_NEED_LOGIN` 中,只有路由在 `EXCLUDE_PAGE_LIST` 中,才需要登录,相当于黑名单。 +在 `默认无需登录策略: DEFAULT_NO_NEED_LOGIN` 中,只有路由在 `EXCLUDE_LOGIN_PATH_LIST` 中,才需要登录,相当于黑名单。 -在 `默认需要登录策略: DEFAULT_NEED_LOGIN` 中,只有路由在 `EXCLUDE_PAGE_LIST` 中,才不需要登录,相当于白名单。 +在 `默认需要登录策略: DEFAULT_NEED_LOGIN` 中,只有路由在 `EXCLUDE_LOGIN_PATH_LIST` 中,才不需要登录,相当于白名单。 ## 登录注册页路由 diff --git a/src/router/config.ts b/src/router/config.ts index 0dc233e..40adb72 100644 --- a/src/router/config.ts +++ b/src/router/config.ts @@ -12,7 +12,7 @@ export const REGISTER_PAGE = '/pages/login/register' export const LOGIN_PAGE_LIST = [LOGIN_PAGE, REGISTER_PAGE] // 排除在外的列表,白名单策略指白名单列表,黑名单策略指黑名单列表 -export const EXCLUDE_PAGE_LIST = [ +export const EXCLUDE_LOGIN_PATH_LIST = [ '/pages/xxx/index', ] diff --git a/src/router/interceptor.ts b/src/router/interceptor.ts index 5df4716..c9de446 100644 --- a/src/router/interceptor.ts +++ b/src/router/interceptor.ts @@ -1,12 +1,12 @@ /** * by 菲鸽 on 2025-08-19 * 路由拦截,通常也是登录拦截 - * 黑白名单的配置,请看 config.ts 文件, EXCLUDE_PAGE_LIST + * 黑白名单的配置,请看 config.ts 文件, EXCLUDE_LOGIN_PATH_LIST */ import { useTokenStore } from '@/store/token' import { tabbarStore } from '@/tabbar/store' import { getLastPage, parseUrlToObj } from '@/utils/index' -import { EXCLUDE_PAGE_LIST, isNeedLoginMode, LOGIN_PAGE, LOGIN_PAGE_LIST } from './config' +import { EXCLUDE_LOGIN_PATH_LIST, isNeedLoginMode, LOGIN_PAGE, LOGIN_PAGE_LIST } from './config' export const FG_LOG_ENABLE = false @@ -57,8 +57,8 @@ export const navigateToInterceptor = { return true // 明确表示允许路由继续执行 } else { - // 需要登录里面的 EXCLUDE_PAGE_LIST 表示白名单,可以直接通过 - if (EXCLUDE_PAGE_LIST.includes(path)) { + // 需要登录里面的 EXCLUDE_LOGIN_PATH_LIST 表示白名单,可以直接通过 + if (EXCLUDE_LOGIN_PATH_LIST.includes(path)) { return true // 明确表示允许路由继续执行 } // 否则需要重定向到登录页 @@ -73,8 +73,8 @@ export const navigateToInterceptor = { // #region 2/2 不需要登录的情况 --------------------------- else { - // 不需要登录里面的 EXCLUDE_PAGE_LIST 表示黑名单,需要重定向到登录页 - if (EXCLUDE_PAGE_LIST.includes(path)) { + // 不需要登录里面的 EXCLUDE_LOGIN_PATH_LIST 表示黑名单,需要重定向到登录页 + if (EXCLUDE_LOGIN_PATH_LIST.includes(path)) { FG_LOG_ENABLE && console.log('2 isNeedLogin redirectUrl:', redirectUrl) uni.navigateTo({ url: redirectUrl }) return false // 明确表示阻止原路由继续执行