#鸿蒙通关秘籍#如何在HarmonyOS中实现首次登录后无需重复登录?

HarmonyOS
2024-12-03 09:23:32
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
hm673ff0953ed07

在HarmonyOS应用的Navigation中,通过路由拦截实现用户首次登录后无需重复登录。具体步骤如下:

  1. 在路由模块增加Interceptor类,定义拦截逻辑。

    export interface InterceptorExecute {
      executeFunction(router: RouterInfo, param?: string): boolean;
    }
    
    export class Interceptor {
      private static list: Array<InterceptorExecute> = [];
    
      public static registerInterceptorPage(interceptorFnc: InterceptorExecute): void {
        Interceptor.list.push(interceptorFnc);
      }
    
      public static interceptor(routerInfo: RouterInfo, param?: string): boolean {
        for (let i = 0; i < Interceptor.list.length; i++) {
          if (Interceptor.list[i].executeFunction(routerInfo, param))
            return true;
        }
        return false;
      }
    }
    
  2. 子模块中定义业务具体拦截逻辑。

    export class MyPageInterceptorExecute implements InterceptorExecute {
      executeFunction(routerInfo: RouterInfo, param?: string): boolean {
        if (routerInfo !== undefined && routerInfo.pageName === RouterInfo.NAVIGATION_INTERCEPTOR.pageName) {
          if (!AppStorage.get("login")) {
            DynamicsRouter.push(RouterInfo.MULTI_MODAL_TRANSITION, param);
            return true;
          } else {
            return false;
          }
        }
        return false;
      }
    }
    
    Interceptor.registerInterceptorPage(new MyPageInterceptorExecute());
    
  3. 在登录页面点击登录按钮后,将登陆状态置为true。

    Button($r('app.string.multimodaltransion_phone_start_login'))
      .onClick(() => {
        if (this.isConfirmed) {
          AppStorage.set("login", true);
          DynamicsRouter.pop();
          DynamicsRouter.push(RouterInfo.NAVIGATION_INTERCEPTOR);
        }
      });
    

这样,当用户首次登录后,拦截器会检查登录状态,从而决定是否需要用户重新登录。

分享
微博
QQ
微信
回复
2024-12-03 11:54:40
相关问题