微信企業(yè)號開發(fā)之微信考勤Cookies的使用
在上篇文章給大家介紹了微信企業(yè)號開發(fā)之微信考勤百度地圖定位,接下來通過本文學習微信企業(yè)號開發(fā)之微信考勤Cookies的使用,具體內(nèi)容如下。
使用微信考勤,每次使用微信企業(yè)號開發(fā):微信用戶信息和web網(wǎng)頁的session的關系這個里邊的方法,調(diào)用微信的接口,有點慢,微信官方也推薦使用Cookies,但如何使用Cookies,自己卻一直沒有搞清楚。
原來一直以為在服務端獲取客戶端的數(shù)據(jù)有兩個方法,一種就是查詢字符串放在URL上,一種就是放在form中,post提交,自己以前也使用過但主要是在客戶端使用,從來沒法把Cookies中的數(shù)據(jù)直接提交到服務端,即使有也是通過把Cookies中的數(shù)據(jù)讀取出來后放入form中的隱藏字段,然后post到服務端。
顯然微信考勤這類其實就是一個URL,在進入URL的過程中,沒有什么post數(shù)據(jù)的過程。只有進入URL之后再通過用戶提交,或者ajax提交??傊坪鯖]法直接把Cookies中的數(shù)據(jù)直接提交給服務端。似乎陷入了僵局。于是自己再一次研究了Cookies,發(fā)現(xiàn)Cookies似乎是主動提交到服務端的,但和post是提交的位置不一樣,當然我沒有找到相關文檔,是測試發(fā)現(xiàn)的。只要自己設定了Cookies,每次進入URL都會提交Cookies,自然就可以在服務端讀取到Cookies的值了。這時才真正明白記住密碼的真正實現(xiàn)原理。并不是把Cookies的值讀出來,放入隱藏字段,然后通過ajax提交到服務端,就可以免登陸了。
可以看到Cookies的數(shù)據(jù)到了服務端,sessionID也是通過Cookies這種方式傳到服務端的。
前端js讀取,設置Cookies的方法:
function setCookie(name, value) {//兩個參數(shù),一個是cookie的名子,一個是值 var Days = 30; //此 cookie 將被保存 30 天 var exp = new Date(); //new Date("December 31, 9998"); exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString(); } function getCookie(name) {//取cookies函數(shù) var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); if (arr != null) return unescape(arr[2]); return null; }
CSharp服務端操作Cookies:
設置Cookies
HttpCookie cookie = new HttpCookie("UserCode", username); cookie.Expires = DateTime.Now.AddDays(10);// (365 * 24 * 3600); this.Response.AppendCookie(cookie); HttpCookie cookieDeviceId = new HttpCookie("DeviceId", rt.DeviceId); cookieDeviceId.Expires = DateTime.Now.AddDays(10);// (365 * 24 * 3600); this.Response.AppendCookie(cookieDeviceId);
讀取Cookies:
HttpCookie ttHttpCookie = this.Request.Cookies.Get("UserCode"); HttpCookie ttHttpCookieDeviceId = this.Request.Cookies.Get("DeviceId"); string code = Request.QueryString["code"]; if (ttHttpCookie == null || ttHttpCookieDeviceId == null) { WeiApi(code); } else { string username = ttHttpCookie.Value; string DeviceId = ttHttpCookieDeviceId.Value; if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(DeviceId)) { WeiApi(code); } else { new AppException("讀取Cookies UserCode=" + username + ",DeviceId=" + DeviceId); initSession(username, DeviceId); } }
以上內(nèi)容給大家介紹了微信企業(yè)號開發(fā)之微信考勤Cookies的使用,希望大家喜歡。
- 圖文介紹報表與企業(yè)微信公眾號集成方案
- 微信開發(fā)--企業(yè)轉(zhuǎn)賬到用戶
- 微信企業(yè)號 根據(jù)錯誤碼返回錯誤信息類封裝
- 微信企業(yè)號驗證/發(fā)送/接收消息
- java微信企業(yè)號開發(fā)之通訊錄
- java微信企業(yè)號開發(fā)之發(fā)送消息(文本、圖片、語音)
- java微信企業(yè)號開發(fā)之開發(fā)模式的開啟
- 微信企業(yè)號開發(fā)之微信考勤百度地圖定位
- 微信公眾號支付之坑:調(diào)用支付jsapi缺少參數(shù) timeStamp等錯誤解決方法
- php版微信開發(fā)Token驗證失敗或請求URL超時問題的解決方法
- [企業(yè)公眾號]升級到[企業(yè)微信]之后發(fā)送消息失敗的解決方法
相關文章
javascript之DIV拖動類 支持在FF下拖動,調(diào)用簡單
javascript之DIV拖動類 支持在FF下拖動,調(diào)用簡單...2007-08-08echarts圖表設置寬度100%結(jié)果為100px的解決辦法
在開發(fā)一個前端項目時需要用到Element-ui的el-tabs組件和Echart開源庫,當兩者嵌套使用時,我給Echart中的圖表寬度設置為了100%,但是實際的寬度卻只有100px,這篇文章主要給大家介紹了關于echarts圖表設置寬度100%結(jié)果為100px的解決辦法,需要的朋友可以參考下2022-12-12High Performance JavaScript(高性能JavaScript)讀書筆記分析
High Performance JavaScript(高性能JavaScript)讀書筆記,讓你的js代碼更有效率。2011-05-05