MIP ACCESS細(xì)節(jié)剖析

什么是MIP ACCESS

MIP ACCESS是一種頁面訪問權(quán)限控制機制,能夠允許網(wǎng)頁發(fā)布者在頁面元素中定義內(nèi)容標(biāo)記错负,并結(jié)合用戶訪問情況進行綜合評價了袁,從而展現(xiàn)或隱藏頁面中內(nèi)容朗恳,直至用戶登錄、訂閱或付費后才能夠查看隱藏內(nèi)容的一種全新閱讀模式载绿。

優(yōu)勢在哪里粥诫?

  • 方式新穎:頁面中任何元素都能加入權(quán)限控制標(biāo)記,并根據(jù)標(biāo)記解析情況進行展示或隱藏崭庸,打破了傳統(tǒng)閱讀只展示前n字的模式怀浆;
  • 形式多樣:頁面內(nèi)容可以是任何元素,包括純文本怕享、圖片执赡、視頻等;
  • 數(shù)據(jù)驅(qū)動:內(nèi)容展現(xiàn)與否直接與發(fā)布者配置的數(shù)據(jù)相關(guān)聯(lián)函筋,根據(jù)解析情況決定是否展示相應(yīng)元素沙合;
  • 配置靈活:發(fā)布者可以根據(jù)不同的需求配置不同接口,如數(shù)據(jù)請求接口跌帐、訪問記錄接口首懈、登錄頁面、登出頁面等谨敛;

DEMO演示

在說具體實現(xiàn)和細(xì)節(jié)之前究履,我們列舉了四個DEMO認(rèn)識一下ACCESS到底是一個怎樣的存在吧!

  • DEMO1演示了ACCESS的基本功能脸狸,該案例提供了1篇首次點擊免費文章和3篇免費文章最仑,首次點擊免費是指在第一次訪問該域名下具有ACCESS功能的頁面時免費查看的功能;如果訪問文章數(shù)目超過4篇時炊甲,頁面中配置有ACCESS屬性的模塊將會隱藏泥彤,登錄后方可查看全部;
    mip-access
  • DEMO2演示的是登錄功能卿啡,案例制定的策略是登錄后所有文章均免費查看全景;
    mip-access-login
  • DEMO3演示了ACCESS登出功能,登出后受到權(quán)限限制牵囤;
    mip-access-logout
  • DEMO4演示了重置數(shù)據(jù)的功能爸黄,重置會刪除后端數(shù)據(jù),由各自策略而定揭鳞,在重置成功后所有頁面的瀏覽記錄均被刪除炕贵;
    mip-access-reset

名詞解釋

在講具體細(xì)節(jié)之前,大家先熟悉熟悉這些專有名詞吧野崇!

  • Access Runtime: MIP Javascript運行環(huán)境称开;
  • Access Content Markup: 模塊中以屬性形式定義的,規(guī)定訪問權(quán)限的標(biāo)示;
  • Authorization endpoint: 授權(quán)接口鳖轰,返回markup解析數(shù)據(jù)清酥;
  • Pingback endpoint: 計量接口,存儲訪問數(shù)據(jù)蕴侣;

使用方式

  • 開發(fā)者實現(xiàn)接口:所有接口的請求都依據(jù)cors方案焰轻,包括Authorization接口(返回解析DOM元素展示與否的數(shù)據(jù))、Pingback接口昆雀,登陸相關(guān)接口相關(guān)邏輯辱志;

  • 引入mip腳本;

    <script type="text/javascript" src="https://mipcache.bdstatic.com/static/v1/mip.js"></script>
    
  • 定義script配置標(biāo)簽狞膘,并配置以下信息:

    <script id="mip-access" type="application/json">
    {
      "authorization": "https://publisher.com/mip-access/api/mip-authorization.json?rid=READER_ID&url=CANONICAL_URL",
      "pingback": "https://publisher.com/mip-access/api/mip-pingback?rid=READER_ID",
      "login": "https://publisher.com/mip-access/login/?rid=READER_ID&url=CANONICAL_URL",
      "authorizationFallbackResponse": {
          "error": true,
          "access": false
        },
        "type": "client"
    }
    </script>
    
    • authorization:授權(quán)接口揩懒,返回mip-access表達式中需要進行計算的數(shù)據(jù);

    • pingback:計量接口挽封,每次訪問頁面之后已球,通過該url發(fā)送請求到開發(fā)者服務(wù)器,由其對數(shù)據(jù)進行管理辅愿,如每訪問一次計數(shù)減1智亮;

    • noPingback:是否允許計量;

    • login:登陸相關(guān)接口渠缕,可以是一個map,如下:

      "login": {
           "login": "https://publisher.com/login.html?rid={READER_ID}",
           "logout": "https://publisher.com/logout.html?rid={READER_ID}"
      }
      
    • authorizationFallbackResponse:如果Authorization接口請求失敗褒繁,需要在這里配置相關(guān)接口參數(shù)作為backup亦鳞;

      "authorizationFallbackResponse": {
          "error": true,
          "access": false
      }
      
    • authorizationTimeout:Authorization接口請求超時時間,默認(rèn)為3s棒坏;

  • mip-access屬性來書寫表達式

    <div mip-access=“access AND subscriber”>…</div>
    

實現(xiàn)細(xì)節(jié)



上圖為純前端方式實現(xiàn)ACCESS的時序圖燕差,下面就以這個引子來說一下ACCESS的工作流程吧!

  • 首先用戶在訪問頁面時坝冕,請求會發(fā)送到CDN(頁面嵌套在Super Frame中)或者開發(fā)者(單個MIP頁面)自己的服務(wù)器上徒探,此時返回html文檔給用戶,這樣做是為了讓用戶能夠第一時間看到頁面喂窟,縮短請求的白屏?xí)r間测暗;
  • html文檔返回之后啟動MIP Runtime服務(wù),并將頁面中以mip-access-hide屬性標(biāo)記的所有DOM元素隱藏起來磨澡,同時根據(jù)開發(fā)中提供的Authorization接口發(fā)起請求碗啄;
  • Authorization接口如果請求成功,則通過其返回的數(shù)據(jù)解析html文檔中的markup稳摄,解析結(jié)果為true則展示元素稚字,否則隱藏;如果請求失敗,MIP Runtime會尋找html文檔中以mip-access為標(biāo)示的script胆描,獲取其中定義好的JSON數(shù)據(jù)瘫想,并以authorizationFallbackResponse字段中的內(nèi)容作為解析需要的數(shù)據(jù);如果authorizationFallbackResponse未定義則解析失敳病国夜;
  • 頁面加載完成后如果開發(fā)者配置了noPingback: true的選項,則不會發(fā)起Pingback(該請求主要為了讓server記錄訪問數(shù)據(jù))請求剧蚣;否則發(fā)起請求并將數(shù)據(jù)傳遞給開發(fā)者server進行保存支竹,待下次訪問根據(jù)狀態(tài)返回相應(yīng)的數(shù)據(jù);

適用范圍

目前來說鸠按,純前端的ACCESS實現(xiàn)方案適用與一些不涉及用戶信息和收費業(yè)務(wù)相關(guān)的簡單頁面礼搁,通過該方式可以自由化的配置頁面中元素的展現(xiàn)方式;出于安全考慮和后續(xù)的需要目尖,我們也會根據(jù)需求量來以前端+server的處理方式過濾html文檔馒吴;

寫在最后

有任何問題可以到 github issues 提問。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瑟曲,一起剝皮案震驚了整個濱河市饮戳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洞拨,老刑警劉巖介袜,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捏萍,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機炬太,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門谣妻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胞锰,“玉大人们颜,你說我怎么就攤上這事⌒瞥海” “怎么了键菱?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長今布。 經(jīng)常有香客問我经备,道長,這世上最難降的妖魔是什么部默? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任弄喘,我火速辦了婚禮,結(jié)果婚禮上甩牺,老公的妹妹穿的比我還像新娘蘑志。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布急但。 她就那樣靜靜地躺著澎媒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪波桩。 梳的紋絲不亂的頭發(fā)上戒努,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機與錄音镐躲,去河邊找鬼储玫。 笑死,一個胖子當(dāng)著我的面吹牛萤皂,可吹牛的內(nèi)容都是我干的撒穷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼裆熙,長吁一口氣:“原來是場噩夢啊……” “哼端礼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起入录,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤蛤奥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后僚稿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凡桥,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年蚀同,在試婚紗的時候發(fā)現(xiàn)自己被綠了缅刽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡唤崭,死狀恐怖拷恨,靈堂內(nèi)的尸體忽然破棺而出脖律,到底是詐尸還是另有隱情谢肾,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布小泉,位于F島的核電站芦疏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏酸茴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一薪捍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酪穿,春花似錦凳干、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽只磷。三九已至,卻和暖如春钮追,著一層夾襖步出監(jiān)牢的瞬間预厌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工畏陕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留配乓,地道東北人惠毁。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像腰埂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子屿笼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理翁巍,服務(wù)發(fā)現(xiàn),斷路器灶壶,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫驰凛、插件胸懈、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,094評論 4 62
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,960評論 6 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法趣钱,類相關(guān)的語法胚宦,內(nèi)部類的語法燕垃,繼承相關(guān)的語法,異常的語法利术,線程的語...
    子非魚_t_閱讀 31,623評論 18 399
  • 托著疲憊的身子回到了出租屋军掂,甩了甩濕透的頭發(fā)。因為外面下著瓢潑大雨蝗锥,而我忘記了帶傘,可憐的工資讓我不能爽快的揮一揮...
    這小丫頭片子閱讀 320評論 2 2