首頁 >微信小程式 >小程式開發 >微信小程式的會話保持下一個失效的解決方法

微信小程式的會話保持下一個失效的解決方法

PHPz
PHPz原創
2017-04-03 17:54:517663瀏覽

小程式的HTTP請求全部使用wx.request({})方法,但是此方法每次都會產生一個新的會話,因此在特定使用場景(安全驗證、session保存、CSRF保護)等方面會遇到一些麻煩。例如csrf保護的應用中,即使上次拿到csrf,再下次請求中又會失效。

解決方法

step 1: 取得sessionId以及csrf並儲存

已取得csrf為例,簡單粗暴,在應用程式啟動時候()可以在onLaunch時候)取得第一次要求的Cookie訊息,保存在本地,以後每次在請求頭強制加上cookie資訊即可。
程式碼入下:

//app.jsApp({
    onLaunch:function(){
        this.initSession();
    },
    initSession:function(){
        var that = this;        // step one:get cookie
        wx.request({
            url:'https://my.domain.com/open-api/cookie',
            header:{'Content-Type':'application/x-www-form-urlencoded'},
            method:'GET',
            success:function(res){
                for(let cookie of res.data){                    //这里我仅保存了sessionid,根据需要,也可以保存cookie的其它信息。
                    if(cookie.name === 'JSESSIONID') {
                        that.globalData.sessionId=cookie.value;
                        wx.request({
                            url:'https://my.domain.com/open-api/csrf',
                            header:{'Content-Type':'application/x-www-form-urlencoded','Cookie':'JSESSIONID='+that.globalData.sessionId},
                            method:'GET',
                            success:function(res){
                                that.globalData.csrf=res.data;
                            }
                        })                        break;
                    }
                }
            }
        })
    }
})

step 2: 根據sessionId以及csrf請求別的接口

以後,每次請求別的api接口,就可以在請求頭中添加csrf以及sessionId來維持同一個會話了。
程式碼如下:

doSth:function(){
    var that = this;
    wx.request({
        url:'my.domain.com/api/some-thing',        //这里的CSRF的key(CSRF-TOKEN)具体写什么,根据各位自己的程序设置来写
        header:{'Content-Type':'application/x-www-form-urlencoded','Cookie':'JSESSIONID='+that.globalData.sessionId,'CSRF-TOKEN':that.globalData.csrf},
        method:'POST',
        data:paramdata,
        success:function(res){
            doSomething(res.data);
        }
    })
}

以上是微信小程式的會話保持下一個失效的解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn