亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

微信小程序session管理,客戶端實現

2020-03-21 16:29:18
字體:
來源:轉載
供稿:網友

最近微信小程序開發很火。我們的移動端項目也開始使用小程序來實現,在這之前我們已經基于Html5實現了類似于小程序的應用。了解了小程序開發后覺得有很多相似之處,還是要用到js和css這些技術。但也有許多不同,jquery等這些js庫不能直接使用了、http session也不支持、頁面發起http請求小程序有自己的api。

對于我們項目來說就不只是簡單的將H5頁面翻譯成小程序的頁面這么簡單了。首先要解決的問題就是http session。在H5項目中,使用http session來關聯微信openid這樣每次http請求都能確定是哪個用戶發起的請求。如果熟悉http session的原理,session問題就好解決了。常見的session保持方式是,當瀏覽器向服務端發起http請求時,服務端檢查在http 頭部cookie參數里是否包含sessionid,如果有sessionid就根據sessionid去查看存儲在服務器端的session,session里保存的當前會話的一些信息。如果sessionid沒有服務端就會分配一個,寫到cookie字段里,瀏覽器下次發起其它請求的時候帶上。而在小程序里所有的請求都通過wx.request API來發起的。如果對wx.request API包裝一下,使其每次向服務端發起請求時也添加一個名稱為Cookie的http header,這樣也不用對服務端作改動。服務端分配的sessionid使用wx.setStorageSync API存儲在微信客戶端。

1、客戶端實現 

客戶端代碼目錄smallapp-session/views,客戶端主要實現對wx.request的封裝,在wafer-client-demo項目的基礎上作了一些修改。 

wx.request封裝

var constants = require('./constants');

var utils = require('./utils');

var Session = require('./session');

var loginLib = require('./login');

var noop = function noop() {};

var buildAuthHeader = function buildAuthHeader(session) {

    var header = {};

    if (session && session.id) {

        header['Cookie'] =constants.WX_HEADER_ID+'='+session.id;

    }

    return header;

};

function request(options) {

    if (typeof options !== 'object') {

        var message = '請求傳參應為 object 類型,但實際傳了 ' + (typeof options) + ' 類型';

        throw new RequestError(constants.ERR_INVALID_PARAMS, message);

    }

    var requireLogin = options.login;

    var success = options.success || noop;

    var fail = options.fail || noop;

    var complete = options.complete || noop;

    var originHeader = options.header || {};

    // 成功回調

    var callSuccess = function () {

        success.apply(null, arguments);

        complete.apply(null, arguments);

    };

    // 失敗回調

    var callFail = function (error) {

        fail.call(null, error);

        complete.call(null, error);

    };

    // 是否已經進行過重試

    var hasRetried = false;

    if (requireLogin) {

        doRequestWithLogin();

    } else {

        doRequest();

    }

    // 登錄后再請求

    function doRequestWithLogin() {

        loginLib.login({ success: doRequest, fail: callFail });

    }

    // 實際進行請求的方法

    function doRequest() {

        var authHeader = buildAuthHeader(Session.get());

        console.log(authHeader)

        wx.request(utils.extend({}, options, {

            header: utils.extend({}, originHeader, authHeader),

            success: function (response) {

                var data = response.data;

                console.log("err:",data)

                console.log("errid:",data[constants.WX_SESSION_MAGIC_ID])

                // 如果響應的數據里面包含 SDK Magic ID,表示被服務端 SDK 處理過,此時一定包含登錄態失敗的信息

                if (data && data[constants.WX_SESSION_MAGIC_ID]) {

                    console.log("clear session")

                    // 清除登錄態

                    Session.clear();

                    var error, message;

                    if (data.error === constants.ERR_INVALID_SESSION) {

                        // 如果是登錄態無效,并且還沒重試過,會嘗試登錄后刷新憑據重新請求

                        if (!hasRetried) {

                            hasRetried = true;

                            doRequestWithLogin();

                            return;

                        }

                        message = '登錄態已過期';

                        error = new RequestError(data.error, message);

                    } else {

                        message = '鑒權服務器檢查登錄態發生錯誤(' + (data.error || 'OTHER') + '):' + (data.message || '未知錯誤');

                        error = new RequestError(constants.ERR_CHECK_LOGIN_FAILED, message);

                    }

                    callFail(error);

                    return;

                }

                callSuccess.apply(null, arguments);

            },

            fail: callFail,


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产视频亚洲精品| 色吧影院999| 日韩av在线网站| 亚洲新声在线观看| 欧美人与物videos| 伦伦影院午夜日韩欧美限制| 欧美在线观看www| 成人黄色中文字幕| 日韩精品在线免费观看| 国产亚洲精品日韩| 欧美亚洲另类激情另类| 精品国产一区二区三区久久狼5月| 国产精品色婷婷视频| 中文字幕亚洲情99在线| 欧美精品一本久久男人的天堂| 久久九九精品99国产精品| 精品激情国产视频| 亚洲综合精品一区二区| 日韩视频欧美视频| 欧美精品亚州精品| 国产精品十八以下禁看| 68精品久久久久久欧美| 中文字幕亚洲第一| 亚洲欧洲黄色网| 欧美在线免费视频| 欧美激情视频一区二区三区不卡| 精品久久中文字幕久久av| 亚洲色图综合久久| 尤物九九久久国产精品的分类| 91久久国产婷婷一区二区| 日韩欧美aⅴ综合网站发布| 亚洲japanese制服美女| 日韩视频在线一区| 精品久久久一区二区| 日韩国产在线播放| 日本一区二区三区在线播放| 国产精品影院在线观看| 91国产精品91| 亚洲黄页视频免费观看| 色婷婷av一区二区三区在线观看| 久久精品99国产精品酒店日本| 欧美精品videosex极品1| 日韩电影大片中文字幕| 亚洲成人国产精品| 色小说视频一区| 亚洲精品国产精品国自产观看浪潮| 91av成人在线| 人人爽久久涩噜噜噜网站| 亚洲男人的天堂网站| 久久久久久一区二区三区| 最近2019年中文视频免费在线观看| 国产精品草莓在线免费观看| 亚洲免费一级电影| 精品丝袜一区二区三区| 国内精品美女av在线播放| 国内精品视频久久| 国产精品国产三级国产专播精品人| 国产成人激情视频| 欧美日韩亚洲精品内裤| 亚洲一区亚洲二区| 久久久91精品| 欧美肥臀大乳一区二区免费视频| 久久久av一区| 4k岛国日韩精品**专区| 欧美激情2020午夜免费观看| 欧美日韩国产综合新一区| 成人乱色短篇合集| 国产男女猛烈无遮挡91| 亚洲精品久久7777777| 欧美成人精品在线观看| 91最新在线免费观看| 在线播放精品一区二区三区| 精品高清一区二区三区| 国产成人福利视频| 97视频在线播放| 欧美大学生性色视频| 国产精品成人一区二区| 亚洲黄色片网站| 国产一区二区久久精品| 欧美精品999| 久久久久国产精品免费| 欧美激情亚洲另类| 国产日韩精品视频| 欧美激情videoshd| 国产亚洲精品久久久优势| 国产在线精品一区免费香蕉| 国产mv久久久| 欧美日韩亚洲系列| 中文字幕欧美精品日韩中文字幕| 日韩中文字幕精品| 3344国产精品免费看| 国产亚洲综合久久| 国产一区红桃视频| 久久99视频精品| 亚洲精品网站在线播放gif| 欧美日韩国产精品一区二区三区四区| 中文字幕欧美日韩| 欧美日韩在线看| 91久久久久久| 久久久久久高潮国产精品视| 亚洲大尺度美女在线| 亚洲国产精品成人av| 亚洲第一精品夜夜躁人人爽| 日韩欧美主播在线| 91九色视频在线| 欧美精品激情blacked18| 日本精品一区二区三区在线| 亚洲一级片在线看| 国产精品日韩在线| 久久久女女女女999久久| 91系列在线观看| 成人有码在线播放| 久久久精品免费视频| 亚洲精品色婷婷福利天堂| 午夜精品久久久久久久99黑人| 欧美一区二区三区图| 欧美国产精品人人做人人爱| 26uuu另类亚洲欧美日本老年| 97热在线精品视频在线观看| 在线观看不卡av| 色噜噜国产精品视频一区二区| 欧美激情欧美狂野欧美精品| 伊人久久久久久久久久| 俺也去精品视频在线观看| 日韩福利视频在线观看| 97国产在线视频| 国产精品美女久久久免费| 92看片淫黄大片看国产片| 国产精品丝袜白浆摸在线| 91超碰中文字幕久久精品| 日韩**中文字幕毛片| 久久av红桃一区二区小说| 色婷婷综合成人av| 91社区国产高清| 亚洲电影免费观看高清| 亚洲视频国产视频| 粗暴蹂躏中文一区二区三区| 欧美激情亚洲一区| 欧美精品九九久久| 国产成人精品一区二区在线| 成人黄色生活片| 亚洲国产欧美日韩精品| 中文字幕精品久久久久| 久久精品男人天堂| 麻豆国产精品va在线观看不卡| 久久伊人精品一区二区三区| 精品国产区一区二区三区在线观看| xxx欧美精品| 日韩美女在线播放| 国内精品国产三级国产在线专| y97精品国产97久久久久久| 成人国产精品一区| 国产免费一区视频观看免费| 久久综合免费视频| 欧洲精品在线视频| 久久婷婷国产麻豆91天堂| 久久久免费av| 久久精品美女视频网站| 亚洲欧美日韩视频一区| 在线观看欧美日韩国产| 欧美日韩精品在线观看| 国产一区二区三区在线| 久久久久免费精品国产| 国产精品啪视频|