diff --git a/.vscode/settings.json b/.vscode/settings.json
index fec1619..efe2a80 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -44,7 +44,6 @@
"refresherrefresh",
"scrolltolower",
"tabbar",
- "unibest",
"uvui",
"WechatMiniprogram"
],
diff --git a/index.html b/index.html
index 2e368d0..b7dfd9f 100644
--- a/index.html
+++ b/index.html
@@ -14,7 +14,7 @@
'" />',
)
-
unibest
+
diff --git a/pages.config.ts b/pages.config.ts
index cb0b38e..72ec79c 100644
--- a/pages.config.ts
+++ b/pages.config.ts
@@ -3,7 +3,7 @@ import { defineUniPages } from '@uni-helper/vite-plugin-uni-pages'
export default defineUniPages({
globalStyle: {
navigationStyle: 'default',
- navigationBarTitleText: 'unibest',
+ navigationBarTitleText: '',
navigationBarBackgroundColor: '#f8f8f8',
navigationBarTextStyle: 'black',
backgroundColor: '#FFFFFF',
diff --git a/src/App.vue b/src/App.vue
index a8e315e..7f37b58 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,20 +1,37 @@
diff --git a/src/interceptors/index.ts b/src/interceptors/index.ts
index 292d9f8..14c9168 100644
--- a/src/interceptors/index.ts
+++ b/src/interceptors/index.ts
@@ -1,3 +1,3 @@
-export { routeInterceptor } from './route'
+export { routerBeforeEachConfig } from './route'
export { requestInterceptor } from './request'
export { prototypeInterceptor } from './prototype'
diff --git a/src/interceptors/route.ts b/src/interceptors/route.ts
index edbe957..f9ee1f0 100644
--- a/src/interceptors/route.ts
+++ b/src/interceptors/route.ts
@@ -5,10 +5,13 @@
* 我这里应为大部分都可以随便进入,所以使用黑名单
*/
import { useUserStore } from '@/store'
-import { getNeedLoginPages, needLoginPages as _needLoginPages } from '@/utils'
+import {
+ getNotNeedLoginPages as _getNotNeedLoginPages,
+ notNeedLoginPages as _notNeedLoginPages,
+} from '@/utils'
+import type { Router } from 'vue-router'
-// TODO Check
-const loginRoute = '/pages/login/index'
+export const loginRoute = '/pages/login/index'
const isLogged = () => {
const userStore = useUserStore()
@@ -23,14 +26,14 @@ const navigateToInterceptor = {
invoke({ url }: { url: string }) {
// console.log(url) // /pages/route-interceptor/index?name=feige&age=30
const path = url.split('?')[0]
- let needLoginPages: string[] = []
+ let notNeedLoginPages: string[] = []
// 为了防止开发时出现BUG,这里每次都获取一下。生产环境可以移到函数外,性能更好
if (isDev) {
- needLoginPages = getNeedLoginPages()
+ notNeedLoginPages = getNotNeedLoginPages()
} else {
- needLoginPages = _needLoginPages
+ notNeedLoginPages = _notNeedLoginPages
}
- const isNeedLogin = needLoginPages.includes(path)
+ const isNeedLogin = notNeedLoginPages.includes(path)
if (!isNeedLogin) {
return true
}
@@ -51,3 +54,49 @@ export const routeInterceptor = {
uni.addInterceptor('redirectTo', navigateToInterceptor)
},
}
+
+export const getNotNeedLoginPages = () => {
+ let notNeedLoginPages: string[] = []
+ if (isDev) {
+ notNeedLoginPages = _getNotNeedLoginPages()
+ } else {
+ notNeedLoginPages = _notNeedLoginPages
+ }
+ return notNeedLoginPages
+}
+
+export const checkLoginUrl = (url: string) => {
+ const path = url.split('?')[0]
+ const isNotNeedLogin = getNotNeedLoginPages().includes(path)
+ return isNotNeedLogin
+}
+
+export const checkWithRedirectLogin = (url: string) => {
+ const isNotNeedLogin = checkLoginUrl(url)
+ if (!isNotNeedLogin) {
+ return !isLogged()
+ }
+ return false
+}
+
+export const checkNotFound = (url: string) => {
+ const isNotNeedLogin = checkLoginUrl(url)
+ if (!isNotNeedLogin) {
+ return !isLogged()
+ }
+ return false
+}
+
+export const routerBeforeEachConfig = (router: Router) => {
+ router.beforeEach((to, from, next) => {
+ if (checkWithRedirectLogin(to.path)) {
+ return next({
+ path: loginRoute,
+ query: {
+ redirect: to.fullPath,
+ },
+ })
+ }
+ return next()
+ })
+}
diff --git a/src/main.ts b/src/main.ts
index 8e4466e..1f21bb8 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,16 +1,22 @@
import { createSSRApp } from 'vue'
import App from './App.vue'
import store from './store'
-import { routeInterceptor, requestInterceptor, prototypeInterceptor } from './interceptors'
+import { requestInterceptor, prototypeInterceptor, routerBeforeEachConfig } from './interceptors'
import 'virtual:uno.css'
import '@/style/index.scss'
export function createApp() {
const app = createSSRApp(App)
+
app.use(store)
- app.use(routeInterceptor)
+ // app.use(routeInterceptor)
app.use(requestInterceptor)
app.use(prototypeInterceptor)
+
+ setTimeout(() => {
+ routerBeforeEachConfig((app as any).router)
+ }, 0)
+
return {
app,
}
diff --git a/src/pages-sub/demo/index.vue b/src/pages-sub/demo/index.vue
index 9af4a02..6126ddc 100644
--- a/src/pages-sub/demo/index.vue
+++ b/src/pages-sub/demo/index.vue
@@ -1,6 +1,5 @@
{
- needLogin: true,
style: { navigationBarTitleText: '分包页面 标题' },
}
diff --git a/src/pages.json b/src/pages.json
index 5c47a15..8dff773 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -1,7 +1,7 @@
{
"globalStyle": {
"navigationStyle": "default",
- "navigationBarTitleText": "unibest",
+ "navigationBarTitleText": "",
"navigationBarBackgroundColor": "#f8f8f8",
"navigationBarTextStyle": "black",
"backgroundColor": "#FFFFFF"
@@ -50,14 +50,6 @@
]
},
"pages": [
- {
- "path": "pages/login/index",
- "type": "home",
- "style": {
- "navigationBarTitleText": "登录",
- "navigationStyle": "custom"
- }
- },
{
"path": "pages/invest/index",
"type": "home",
@@ -82,6 +74,15 @@
"navigationBarTitleText": "房屋"
}
},
+ {
+ "path": "pages/login/index",
+ "type": "page",
+ "style": {
+ "navigationBarTitleText": "登录",
+ "navigationStyle": "custom"
+ },
+ "notNeedLogin": false
+ },
{
"path": "pages/my/index",
"type": "page",
@@ -98,7 +99,6 @@
{
"path": "demo/index",
"type": "page",
- "needLogin": true,
"style": {
"navigationBarTitleText": "分包页面 标题"
}
diff --git a/src/pages/login/index.vue b/src/pages/login/index.vue
index 4381870..81635af 100644
--- a/src/pages/login/index.vue
+++ b/src/pages/login/index.vue
@@ -1,9 +1,10 @@
-
+
{
style: {
navigationBarTitleText: '登录',
navigationStyle: 'custom',
},
+ notNeedLogin: false,
}
@@ -39,6 +40,7 @@
忘记密码
登录
@@ -53,6 +55,23 @@