關於設計IOS網絡安全策略想到的

關於IOS的網絡請求與交互,有一個比較常用的插件就是ASI, 就象 ruby 的 RestClient 。這個工具很多常用的方法,可以解決現在的大部分需求。

不過,對於網絡請求的安全機制,都是各個項目寫各自的策略,沒有一套完美的標準來支持各項業務,所以是時候來統一這個標準了。

在設計這套IOS安全方案之前,也有同事用到過其它的一些第三方網絡請求插件,各有優劣。所以爲了兼容不同的第三方插件,在設計時也要考慮這一點。

 

另外,關於網絡安全策略,也有幾套現有國際通用標準,所以除了爲我們自己定製的安全策略外,也要能兼容它們,以適應和其它第三方做接口.

然後得到這套初略的設計:



 
BHHTTPRequestFactory  是一個工廠類,可以爲各種第三方插件進行支持,以後要添加一個第三方插件,只需要增加一個工廠類和實體類。大家都遵循統一的創建方法createHttpRequest 。這個創建方法同樣也遵循統一的網絡請求協議,BHHTTPRequestProtocol ,這個協議可以封裝我們自己的標準方法。

爲了使這個方法支持適應各種標準,所以這裏用了策略模式將它放在了一個策略類中:HTTPSecurity , 同樣擴展也是非常方便的。

其中有幾個細節要注意,ASI已經封裝的很好的類了,爲了不破壞其基礎特性我們這裏只是對它進行了繼承,然後進行了各自的擴展。  但oc是不支持多重繼承,所以這裏用到了協議 <BHHTTPRequestProtocol >。 這樣它不僅可以用ASI的特性,也可以在其上增加公司自身的安全策略。

在創建這個實體時也只是對其進行接口生成,而不針對具體類,所以就解決了在<BHHTTPRequestFactoryProtocol >創建的實體到底是哪個具體類的情況,不用依賴的這麼緊密。

這是實用的一例:

    BHASIRequestFactory *requestF = [[BHASIRequestFactory alloc] init];
   
    id request = [requestF createHttpRequest];
   
    [request createSecurity]; // 創建安全策略
   
    [request buildSecurityParams]; // 完成安全加密等任務




 
以上只是個人的一點拙見!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章