微信企业号开发之微信考勤Cookies的使用


Posted in Javascript onSeptember 11, 2015

在上篇文章给大家介绍了微信企业号开发之微信考勤百度地图定位,接下来通过本文学习微信企业号开发之微信考勤Cookies的使用,具体内容如下。

使用微信考勤,每次使用微信企业号开发:微信用户信息和web网页的session的关系这个里边的方法,调用微信的接口,有点慢,微信官方也推荐使用Cookies,但如何使用Cookies,自己却一直没有搞清楚。

原来一直以为在服务端获取客户端的数据有两个方法,一种就是查询字符串放在URL上,一种就是放在form中,post提交,自己以前也使用过但主要是在客户端使用,从来没法把Cookies中的数据直接提交到服务端,即使有也是通过把Cookies中的数据读取出来后放入form中的隐藏字段,然后post到服务端。

显然微信考勤这类其实就是一个URL,在进入URL的过程中,没有什么post数据的过程。只有进入URL之后再通过用户提交,或者ajax提交。总之似乎没法直接把Cookies中的数据直接提交给服务端。似乎陷入了僵局。于是自己再一次研究了Cookies,发现Cookies似乎是主动提交到服务端的,但和post是提交的位置不一样,当然我没有找到相关文档,是测试发现的。只要自己设定了Cookies,每次进入URL都会提交Cookies,自然就可以在服务端读取到Cookies的值了。这时才真正明白记住密码的真正实现原理。并不是把Cookies的值读出来,放入隐藏字段,然后通过ajax提交到服务端,就可以免登陆了。

可以看到Cookies的数据到了服务端,sessionID也是通过Cookies这种方式传到服务端的。

前端js读取,设置Cookies的方法:

function setCookie(name, value) {//两个参数,一个是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函数   
 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); 
 } 
}

以上内容给大家介绍了微信企业号开发之微信考勤Cookies的使用,希望大家喜欢。

Javascript 相关文章推荐
Js event事件在IE、FF兼容性问题
Jan 01 Javascript
JS中判断JSON数据是否存在某字段的方法
Mar 07 Javascript
jquery实现标签上移、下移、置顶
Apr 26 Javascript
node.js回调函数之阻塞调用与非阻塞调用
Nov 13 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
Jun 01 Javascript
AngularJS常见过滤器用法实例总结
Jul 06 Javascript
使用DataTable插件实现异步加载数据
Nov 19 Javascript
JS脚本实现网页自动秒杀点击
Jan 11 Javascript
详解小程序退出页面时清除定时器
Apr 28 Javascript
JS实现返回上一页并刷新页面的方法分析
Jul 16 Javascript
jquery实现上传文件进度条
Mar 26 jQuery
JavaScript oncopy事件用法实例解析
May 13 Javascript
微信企业号开发之微信考勤百度地图定位
Sep 11 #Javascript
JavaScript处理解析JSON数据过程详解
Sep 11 #Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
Sep 11 #Javascript
JavaScript实现算术平方根算法-代码超简单
Sep 11 #Javascript
js图片卷帘门导航菜单特效代码分享
Sep 10 #Javascript
jQuery超精致图片轮播幻灯片特效代码分享
Sep 10 #Javascript
手机端转盘抽奖代码分享
Sep 10 #Javascript
You might like
php图片加水印原理(超简单的实例代码)
2013/01/18 PHP
一个好用的PHP验证码类实例分享
2013/12/27 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
php metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
laravel学习教程之关联模型
2016/07/30 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
uploadify 3.0 详细使用说明
2012/06/18 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
Electron 调用命令行(cmd)
2019/09/23 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
使用python实现BLAST
2018/02/12 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
新三好学生主要事迹
2014/01/23 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
领导干部廉政自律承诺书
2014/05/26 职场文书
债务纠纷委托书
2014/08/30 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
机械原理课程设计心得体会
2016/01/15 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
Python基础详解之邮件处理
2021/04/28 Python
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android