微信企業(yè)號(hào)開發(fā)之微信考勤Cookies的使用
在上篇文章給大家介紹了微信企業(yè)號(hào)開發(fā)之微信考勤百度地圖定位,接下來(lái)通過(guò)本文學(xué)習(xí)微信企業(yè)號(hào)開發(fā)之微信考勤Cookies的使用,具體內(nèi)容如下。
使用微信考勤,每次使用微信企業(yè)號(hào)開發(fā):微信用戶信息和web網(wǎng)頁(yè)的session的關(guān)系這個(gè)里邊的方法,調(diào)用微信的接口,有點(diǎn)慢,微信官方也推薦使用Cookies,但如何使用Cookies,自己卻一直沒(méi)有搞清楚。
原來(lái)一直以為在服務(wù)端獲取客戶端的數(shù)據(jù)有兩個(gè)方法,一種就是查詢字符串放在URL上,一種就是放在form中,post提交,自己以前也使用過(guò)但主要是在客戶端使用,從來(lái)沒(méi)法把Cookies中的數(shù)據(jù)直接提交到服務(wù)端,即使有也是通過(guò)把Cookies中的數(shù)據(jù)讀取出來(lái)后放入form中的隱藏字段,然后post到服務(wù)端。
顯然微信考勤這類其實(shí)就是一個(gè)URL,在進(jìn)入U(xiǎn)RL的過(guò)程中,沒(méi)有什么post數(shù)據(jù)的過(guò)程。只有進(jìn)入U(xiǎn)RL之后再通過(guò)用戶提交,或者ajax提交??傊坪鯖](méi)法直接把Cookies中的數(shù)據(jù)直接提交給服務(wù)端。似乎陷入了僵局。于是自己再一次研究了Cookies,發(fā)現(xiàn)Cookies似乎是主動(dòng)提交到服務(wù)端的,但和post是提交的位置不一樣,當(dāng)然我沒(méi)有找到相關(guān)文檔,是測(cè)試發(fā)現(xiàn)的。只要自己設(shè)定了Cookies,每次進(jìn)入U(xiǎn)RL都會(huì)提交Cookies,自然就可以在服務(wù)端讀取到Cookies的值了。這時(shí)才真正明白記住密碼的真正實(shí)現(xiàn)原理。并不是把Cookies的值讀出來(lái),放入隱藏字段,然后通過(guò)ajax提交到服務(wù)端,就可以免登陸了。
可以看到Cookies的數(shù)據(jù)到了服務(wù)端,sessionID也是通過(guò)Cookies這種方式傳到服務(wù)端的。
前端js讀取,設(shè)置Cookies的方法:
function setCookie(name, value) {//兩個(gè)參數(shù),一個(gè)是cookie的名子,一個(gè)是值
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服務(wù)端操作Cookies:
設(shè)置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è)號(hào)開發(fā)之微信考勤Cookies的使用,希望大家喜歡。
- 圖文介紹報(bào)表與企業(yè)微信公眾號(hào)集成方案
- 微信開發(fā)--企業(yè)轉(zhuǎn)賬到用戶
- 微信企業(yè)號(hào) 根據(jù)錯(cuò)誤碼返回錯(cuò)誤信息類封裝
- 微信企業(yè)號(hào)驗(yàn)證/發(fā)送/接收消息
- java微信企業(yè)號(hào)開發(fā)之通訊錄
- java微信企業(yè)號(hào)開發(fā)之發(fā)送消息(文本、圖片、語(yǔ)音)
- java微信企業(yè)號(hào)開發(fā)之開發(fā)模式的開啟
- 微信企業(yè)號(hào)開發(fā)之微信考勤百度地圖定位
- 微信公眾號(hào)支付之坑:調(diào)用支付jsapi缺少參數(shù) timeStamp等錯(cuò)誤解決方法
- php版微信開發(fā)Token驗(yàn)證失敗或請(qǐng)求URL超時(shí)問(wèn)題的解決方法
- [企業(yè)公眾號(hào)]升級(jí)到[企業(yè)微信]之后發(fā)送消息失敗的解決方法
相關(guān)文章
JavaScript數(shù)組扁平轉(zhuǎn)樹形結(jié)構(gòu)數(shù)據(jù)(Tree)的實(shí)現(xiàn)
本文主要介紹了JavaScript數(shù)組扁平轉(zhuǎn)樹形結(jié)構(gòu)數(shù)據(jù)(Tree)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
javascript解析json格式的數(shù)據(jù)方法詳解
這篇文章主要介紹了javascript解析json格式的數(shù)據(jù)方法詳解,文章通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Web?Woker與主線程通信場(chǎng)景下對(duì)postMessage的簡(jiǎn)潔封裝詳解
這篇文章主要為大家介紹了Web?Woker與主線程通信場(chǎng)景下對(duì)postMessage的簡(jiǎn)潔封裝示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
(JS實(shí)現(xiàn))MapBar中坐標(biāo)的加密和解密的腳本
(JS實(shí)現(xiàn))MapBar中坐標(biāo)的加密和解密的腳本...2007-05-05

