Просмотр исходного кода

因为有直接打开非首页的其他页面的需求,所以登录态的初始化逻辑修改:如果localstorage里有token,不去验证token是否还有效,直接认为有效,反正如果发请求时发现token已过期,也会把登录态改为无效。

任一存 1 год назад
Родитель
Сommit
37909abca8

+ 3 - 2
game/src/App.vue

@@ -8,7 +8,7 @@
 import { ref, computed, watch, onMounted } from "vue"
 import { useRoute, useRouter } from "vue-router"
 import { useStore } from "vuex"
-import { checkLoginStatusAndProcess, getGameRuleList, getScoreLimit } from '@/api.js'
+import { checkLoginStatusAndProcess, getUserFromStorageIfNeed, getGameRuleList, getScoreLimit } from '@/api.js'
 
 const {
   windowSizeInCssForRef,
@@ -19,7 +19,8 @@ const route = useRoute()
 const router = useRouter()
 const store = useStore()
 
-checkLoginStatusAndProcess()
+// checkLoginStatusAndProcess()
+getUserFromStorageIfNeed()
 
 getGameRuleList().then((res) => {
   store.commit('setGameRuleList', res)

+ 12 - 0
game/src/api.js

@@ -16,6 +16,18 @@ axios.interceptors.response.use(function (response) {
   return error
 })
 
+export function getUserFromStorageIfNeed() {
+  if (!store.state.token || !store.state.userInfo) {
+    const lastToken = localStorage.getItem('token')
+    const lastUserInfoStr = localStorage.getItem('userInfo')
+    if (lastToken && lastUserInfoStr) {
+      store.commit('setLoginStatus', true)
+      store.commit('setToken', lastToken)
+      store.commit('setUserInfo', JSON.parse(lastUserInfoStr))
+    }
+  }
+}
+
 // export async function reportVisit() {
 //   const res = await axios({
 //     method: 'get',

+ 6 - 6
game/src/router/index.js

@@ -87,11 +87,11 @@ const router = createRouter({
   routes
 })
 
-router.beforeEach((to, from) => {
-  // 生产环境下强制每次都从首页进入
-  if (process.env.NODE_ENV === 'production' && !from.name && to.name !== 'HomeView' && !to.query['no-redirect']) {
-    return '/'
-  }
-})
+// router.beforeEach((to, from) => {
+//   // 生产环境下强制每次都从首页进入
+//   if (process.env.NODE_ENV === 'production' && !from.name && to.name !== 'HomeView' && !to.query['no-redirect']) {
+//     return '/'
+//   }
+// })
 
 export default router

+ 1 - 1
game/src/store/index.js

@@ -2,7 +2,7 @@ import { createStore } from 'vuex'
 
 export default createStore({
   state: {
-    loginStatus: undefined,
+    loginStatus: false,
     token: '',
     userInfo: {
       // createTime: "2024-01-08 17:04:43"

+ 0 - 10
game/src/views/HomeView.vue

@@ -250,16 +250,6 @@ const scoreLimit = computed(() => {
   return store.state.scoreLimit
 })
 
-watch(loginStatus, (vNew) => {
-  if (vNew) {
-    getScore().then((res) => {
-      store.commit('setScore', res.total)
-      store.commit('setIfScoreLimitReached', res.hasOver)
-    })
-  }
-}, {
-  immediate: true,
-})
 if (loginStatus.value) {
   getScore().then((res) => {
     store.commit('setScore', res.total)

+ 7 - 1
game/src/views/ShopView.vue

@@ -129,7 +129,8 @@
 import { ref, computed, watch, onMounted } from "vue"
 import { useRoute, useRouter } from "vue-router"
 import { useStore } from "vuex"
-import { getPrizeList, getBonusPointRecord } from '@/api.js'
+import { getScore, getPrizeList, getBonusPointRecord } from '@/api.js'
+
 const route = useRoute()
 const router = useRouter()
 const store = useStore()
@@ -139,6 +140,11 @@ const {
   windowSizeWhenDesignForRef,
 } = useSizeAdapt(390, 752)
 
+getScore().then((res) => {
+  store.commit('setScore', res.total)
+  store.commit('setIfScoreLimitReached', res.hasOver)
+})
+
 const currentTabIdx = ref(0)
 
 const prizeList = ref([])