zxl
2 天以前 874e9cce3b2f9b6649ab72047d98e4244a345b3c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<template>
  <view id="app">
    <slot></slot>
  </view>
</template>
<script>
    export default {
        onLaunch: function() {
            // 应用启动时执行登录校验
            this.checkLogininStaus();
            
            console.log('App Launch')
            // 预加载主要页面,减少切换闪烁
            this.preloadPages();
        },
        onShow: function() {
            console.log('App Show')
        },
        onHide: function() {
            console.log('App Hide')
        },
        methods:{
            checkLogininStaus(){
                console.log("打开时判断登录状态")
                // Todo 需要将这个判断加到每次请求之前判断是否登录.
                 
                // 获取本地存储的登录状态
                const token = uni.getStorageSync('token');
                console.log('当前登录token',token);
                if(!token){
                    //跳转首页
                    uni.reLaunch({
                        url: '/subpackage/login/login', // 你的登录页完整路径
                        fail: (err) => {
                        console.error('跳登录页失败', err);
                        }
                    });
                    return;
                }
                // 后端过滤器自动在调用方法时验证并刷新了token
                this.refreshToken();
                
            },
            refreshToken() {
                // 调用后端接口刷新 token,更新本地存储
                
            },
            preloadPages() {
                // APP平台生效,其它平台调用无影响
                const pages = [
                    '/pages/index/index',
                    '/subpackage/manager/progress',
                    '/subpackage/user/mine',
                    '/subpackage/user/my-projects'
                ];
                pages.forEach(url => {
                    try { uni.preloadPage({ url }); } catch(e) {}
                });
            }
        }
    }
</script>
 
<style>
page {
  margin: 0;
  padding: 0;
}
</style>