|
@@ -1,11 +1,11 @@
|
|
export default async function (to, from) {
|
|
export default async function (to, from) {
|
|
//获得全局url
|
|
//获得全局url
|
|
const { $webUrl, $CwebUrl } = useNuxtApp();
|
|
const { $webUrl, $CwebUrl } = useNuxtApp();
|
|
- if(to.path == '/' || to.path == '/404'){
|
|
|
|
|
|
+ if (getRouteWhiteList(to.path)) {
|
|
//如果目标路由是/,或者/404 无需验证
|
|
//如果目标路由是/,或者/404 无需验证
|
|
- }else{
|
|
|
|
|
|
+ } else {
|
|
// to是目标路由对象,from是来源路由对象
|
|
// to是目标路由对象,from是来源路由对象
|
|
- console.log('进入路由中间件,目标路由:', to.path,"当前路由:",from.path);
|
|
|
|
|
|
+ console.log('进入路由中间件,目标路由:', to.path, "当前路由:", from.path);
|
|
//拆分目标路由
|
|
//拆分目标路由
|
|
let parts = parseRoute(to.path)
|
|
let parts = parseRoute(to.path)
|
|
console.log(parts)
|
|
console.log(parts)
|
|
@@ -19,9 +19,9 @@ export default async function (to, from) {
|
|
query: parts
|
|
query: parts
|
|
})
|
|
})
|
|
console.log(responseRoute)
|
|
console.log(responseRoute)
|
|
- if(responseRoute.code == 200){
|
|
|
|
|
|
+ if (responseRoute.code == 200) {
|
|
//如果路由存在,不做任何操作
|
|
//如果路由存在,不做任何操作
|
|
- }else{
|
|
|
|
|
|
+ } else {
|
|
return navigateTo('/404')
|
|
return navigateTo('/404')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -31,42 +31,46 @@ export default async function (to, from) {
|
|
function parseRoute(url) {
|
|
function parseRoute(url) {
|
|
const parts = url.split('/').filter(Boolean); // 分割并过滤空字符串
|
|
const parts = url.split('/').filter(Boolean); // 分割并过滤空字符串
|
|
const lastPart = parts[parts.length - 1];
|
|
const lastPart = parts[parts.length - 1];
|
|
-
|
|
|
|
|
|
+
|
|
// 提取 id(数字.html 的数字部分)
|
|
// 提取 id(数字.html 的数字部分)
|
|
const idMatch = lastPart.match(/^(\d+)\.html$/);
|
|
const idMatch = lastPart.match(/^(\d+)\.html$/);
|
|
const id = idMatch ? idMatch[1] : undefined;
|
|
const id = idMatch ? idMatch[1] : undefined;
|
|
-
|
|
|
|
|
|
+
|
|
// 如果最后是数字.html、index.html 或 list-数字.html,则去掉它
|
|
// 如果最后是数字.html、index.html 或 list-数字.html,则去掉它
|
|
const isSpecialRoute = idMatch || lastPart === "index.html" || lastPart.startsWith("list-");
|
|
const isSpecialRoute = idMatch || lastPart === "index.html" || lastPart.startsWith("list-");
|
|
if (isSpecialRoute) {
|
|
if (isSpecialRoute) {
|
|
parts.pop();
|
|
parts.pop();
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
let all_route, last_route;
|
|
let all_route, last_route;
|
|
-
|
|
|
|
|
|
+
|
|
// 如果路径以 xiangcunshangcheng 开头
|
|
// 如果路径以 xiangcunshangcheng 开头
|
|
- if (parts[0] === "xiangcunshangcheng") {
|
|
|
|
- if( parts.length > 1){
|
|
|
|
- if(parts[parts.length - 1] != 'gongying' && parts[parts.length - 1] != 'qiugou'){
|
|
|
|
- // 否则按原逻辑处理
|
|
|
|
- all_route = parts.join('/');
|
|
|
|
- last_route = parts.length > 0 ? parts[parts.length - 1] : null;
|
|
|
|
- }else{
|
|
|
|
- // all_route = 去掉最后一层
|
|
|
|
- all_route = parts.slice(0, -1).join('/');
|
|
|
|
- // last_route = 新的最后一层
|
|
|
|
- last_route = parts.length > 1 ? parts[parts.length - 2] : null;
|
|
|
|
- }
|
|
|
|
- }else{
|
|
|
|
- // 否则按原逻辑处理
|
|
|
|
- all_route = parts.join('/');
|
|
|
|
- last_route = parts.length > 0 ? parts[parts.length - 1] : null;
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- // 否则按原逻辑处理
|
|
|
|
- all_route = parts.join('/');
|
|
|
|
- last_route = parts.length > 0 ? parts[parts.length - 1] : null;
|
|
|
|
- }
|
|
|
|
|
|
+ // if (parts[0] === "xiangcunshangcheng") {
|
|
|
|
+ // if( parts.length > 1){
|
|
|
|
+ // if(parts[parts.length - 1] != 'gongying' && parts[parts.length - 1] != 'qiugou'){
|
|
|
|
+ // // 否则按原逻辑处理
|
|
|
|
+ // all_route = parts.join('/');
|
|
|
|
+ // last_route = parts.length > 0 ? parts[parts.length - 1] : null;
|
|
|
|
+ // }else{
|
|
|
|
+ // // all_route = 去掉最后一层
|
|
|
|
+ // all_route = parts.slice(0, -1).join('/');
|
|
|
|
+ // // last_route = 新的最后一层
|
|
|
|
+ // last_route = parts.length > 1 ? parts[parts.length - 2] : null;
|
|
|
|
+ // }
|
|
|
|
+ // }else{
|
|
|
|
+ // // 否则按原逻辑处理
|
|
|
|
+ // all_route = parts.join('/');
|
|
|
|
+ // last_route = parts.length > 0 ? parts[parts.length - 1] : null;
|
|
|
|
+ // }
|
|
|
|
+ // } else {
|
|
|
|
+ // // 否则按原逻辑处理
|
|
|
|
+ // all_route = parts.join('/');
|
|
|
|
+ // last_route = parts.length > 0 ? parts[parts.length - 1] : null;
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ all_route = parts.join('/');
|
|
|
|
+ last_route = parts.length > 0 ? parts[parts.length - 1] : null;
|
|
|
|
+
|
|
// 返回结果(只有数字.html 时才包含 id)
|
|
// 返回结果(只有数字.html 时才包含 id)
|
|
const result = {
|
|
const result = {
|
|
all_route,
|
|
all_route,
|
|
@@ -76,4 +80,33 @@ function parseRoute(url) {
|
|
result.id = id;
|
|
result.id = id;
|
|
}
|
|
}
|
|
return result;
|
|
return result;
|
|
-}
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//获得路由白名单列表
|
|
|
|
+function getRouteWhiteList(path) {
|
|
|
|
+ if (path == '/') {
|
|
|
|
+ console.log('白名单路由!允许访问!')
|
|
|
|
+ //如果用户进入的是首页,直接返回true
|
|
|
|
+ return true
|
|
|
|
+ } else {
|
|
|
|
+ //如果用户进入的不是首页,则需要判断第一层路由是否在白名单
|
|
|
|
+ const parts = path.split('/').filter(Boolean); // 分割并过滤空字符串
|
|
|
|
+ console.log(parts[0])
|
|
|
|
+ let whiteList = [
|
|
|
|
+ "404",
|
|
|
|
+ "search",//搜索页
|
|
|
|
+ "xiangcunshangcheng",//乡村商城搜索页
|
|
|
|
+ "topic",//商圈
|
|
|
|
+ "advertising",//广告
|
|
|
|
+ "about",//关于我们
|
|
|
|
+ "shukanyinxiang",//书刊音像
|
|
|
|
+ ]
|
|
|
|
+
|
|
|
|
+ if (whiteList.includes(parts[0])) {
|
|
|
|
+ console.log('白名单路由!允许访问!')
|
|
|
|
+ return true
|
|
|
|
+ } else {
|
|
|
|
+ return false
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|