全部產品
Search
文件中心

Mobile Platform as a Service:JSAPI 鑒權方法設定

更新時間:Jul 13, 2024

mPaaS 建議所有的 JSAPI 訪問都需要添加存取控制,目前可以通過設定 Plugin 的方式添加存取控制。

  1. 設定自訂許可權控制 Plugin。

    1. 自訂 Plugin,監聽 JSAPI 調用的事件,進行攔截處理。

    2. 在 Plugin 中攔截到事件後,擷取當前頁面的 URL,建議根據 host、scheme 進行字串匹配校正。

    @interface MPPlugin4WebView : NBPluginBase
    
    @end
    
    @implementation MPPlugin4WebView
    
    - (void)pluginDidLoad
    {
        self.scope = kPSDScope_Scene;
        
        // -- 攔截調用的jsapi資訊
        [self.target addEventListener:kEvent_Invocation_Event_Start withListener:self useCapture:NO];
        [self.target addEventListener:kEvent_Invocation_Invoke withListener:self useCapture:NO];
            
        [super pluginDidLoad];
    }
    
    - (void)handleEvent:(PSDEvent *)event
    {
        [super handleEvent:event];
        
        if([kEvent_Invocation_Event_Start isEqualToString:event.eventType] ||
                 [kEvent_Invocation_Invoke isEqualToString:event.eventType]){
            PSDInvocationEvent *invocationEvent = (PSDInvocationEvent *)event;
            NSString *apiName = invocationEvent.invocationName;
            NSDictionary *data = invocationEvent.invocationData;
    
            // 擷取到當前頁面的url,根據scheme和host進行字串匹配校正
            NSURL *url = event.context.currentViewController.url;
            if (![url.host isEqualToString:@"xxx"] || ![url.scheme isEqualToString:@"xxx"]) {
                [event preventDefault];
                [event stopPropagation];
                return;
            }
            
        }
    }
    
    - (int)priority
    {
        return PSDPluginPriority_High+1;
    }
    重要

    URL 要進行精準匹配,至少要匹配到 URI 類的 scheme 和 host 資訊,慎用或不用正則匹配,嚴格避免使用 contains、startsWith、endsWith、indexOf 等不精準函數。

  2. 註冊 Plugin。

    1. 在 mPaaS 容器初始化時,指定自訂 Plugin 的路徑。

    2. 在自訂 Plugin 的 bundle 的 plist 檔案中,註冊上一步的 Plugin。詳情請參考 註冊 Plugin

      image