国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 熱點 > 微信 > 正文

微信小程序登錄數據解密及狀態維持實例詳解

2024-07-22 01:18:35
字體:
來源:轉載
供稿:網友

本文實例講述了微信小程序登錄數據解密及狀態維持。分享給大家供大家參考,具體如下:

學習過小程序的朋友應該知道,在小程序中是不支持cookie的,借助小程序中的緩存我們也可以存儲一些信息,但是對于一些比較重要的信息,我們需要通過登錄狀態維持來保存,同時,為了安全起見,用戶的敏感信息,也是需要加密在網絡上傳輸的。

前臺,service。封裝了http請求,同時封裝了getSession(通過code獲取服務器生成的session)、getUserInfo(獲取用戶信息)、getDecryptionData(解密數據)

//service.js//封裝了http服務,getUserInfo,提供回調函數var recourse = { doMain: "http://www.domain.com/"}module.exports = { //Http Get requestGet: function (url, data, cb) {  wx.request({   url: recourse.doMain + url,   data: data,   method: 'GET',   header: {},   success: function (res) {    cb(res, true)   },   fail: function () {    cb(data, false)   }  }) }, //Http POST requestPost: function (url, data, cb) {  wx.request({   url: recourse.doMain + url,   data: data,   method: 'POST',   header: {},   success: function (res) {    cb(res, true)   },   fail: function () {    cb(data, false)   }  }) }, //獲取第三方sessionId getSession: function (code, cb) {  wx.request({   url: recourse.doMain + 'SmallRoutine/PostCode',   data: { code: code },   method: 'POST',   success: function (res) {    cb(res, true)   },   fail: function (res) {    cb(res, false)   }  }) }, //獲取用戶信息 getUserInfo: function (cb) {  wx.getUserInfo({   success: function (res) {    cb(res, true)   },   fail: function (res) {    cb(res, false)   }  }) }, //獲取解密數據 getDecryptionData: function (cb) {  wx.request({   url: recourse.doMain+'SmallRoutine/Decryption',   data: {    encryptedData: wx.getStorageSync('encryptedData'),    iv: wx.getStorageSync('iv'),    session: wx.getStorageSync('thirdSessionId'),   },   method: 'POST',   success: function (res) {    cb(res, true)   },   fail: function (res) {    cb(res, false)   }  }) }}

后臺,根據code獲取session,客戶端用來保持登錄狀態

[HttpPost]public ActionResult PostCode(string code){  try  {    if(!string.IsNullOrEmpty(code))    {      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(string.Format("https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code",appId,appSecret,code));      request.Method = "GET";      HttpWebResponse response = (HttpWebResponse)request.GetResponse();      StreamReader sr = new StreamReader(response.GetResponseStream());      string content = sr.ReadToEnd();      if(response.StatusCode == HttpStatusCode.OK)      {        var successModel = Newtonsoft.Json.JsonConvert.DeserializeObject<ValidateCodeSuccess>(content);        if(null != successModel.session_key)        {          //session_key是微信服務器生成的針對用戶數據加密簽名的密鑰,不應該傳輸到客戶端          var session_key = successModel.session_key;          //3re_session用于服務器和小程序之間做登錄狀態校驗          var thirdSession = Guid.NewGuid().ToString().Replace("-","");          var now = DateTime.Now;          //存到數據庫或者redis緩存,這里一小時過期          Service.AddLogin(new Domain.Login()          {            Code = code,            Createime = now,            OpenId = successModel.openid,            OverdueTime = now.AddMinutes(60),            SessionKey = successModel.session_key,            SessionRd = thirdSession          });          return Json(new { success = true,session = thirdSession,openId = successModel.openid });        }        else        {          var errModel = Newtonsoft.Json.JsonConvert.DeserializeObject<ValidateCodeFail>(content);          return Json(new { success = false,msg = errModel.errcode + ":" + errModel.errmsg });        }      }      else      {        var errModel = Newtonsoft.Json.JsonConvert.DeserializeObject<ValidateCodeFail>(content);        return Json(new { success = false,msg = errModel.errcode + ":" + errModel.errmsg });      }    }    else    {      return Json(new { success = false,msg = "code不能為null" });    }  }  catch(Exception e)  {    return Json(new { success = false });  }}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 景泰县| 若尔盖县| 故城县| 通州市| 新平| 罗江县| 竹溪县| 湾仔区| 封丘县| 专栏| 康保县| 广灵县| 马龙县| 呼伦贝尔市| 浦北县| 中超| 巩留县| 雷山县| 新河县| 福泉市| 航空| 五莲县| 福州市| 疏勒县| 益阳市| 安国市| 娄烦县| 霍林郭勒市| 集贤县| 获嘉县| 周宁县| 漯河市| 内黄县| 尤溪县| 金山区| 定西市| 长治县| 浙江省| 新郑市| 溆浦县| 黑山县|