用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

微客吧 首页 教程 微信小程序 新手教程 查看内容

利用screenWidth与screenHeight手算布局,tomcat http 转 https,加密解密算法的nodejs ...

纸飞机 2018-3-8 09:39

一:利用screenWidth与screenHeight手算布局作者:秀杰,来自授权地址在app.js中获取到设备宽高// 设备信息wx.getSystemInfo({ success: function(res) { that.screenWidth = res.windowWidth; tha ...

一:利用screenWidth与screenHeight手算布局

作者:秀杰,来自

授权地址

在app.js中获取到设备宽高

  1. // 设备信息
  2. wx.getSystemInfo({
  3. success: function(res) {
  4. that.screenWidth = res.windowWidth;
  5. that.screenHeight = res.windowHeight;
  6. that.pixelRatio = res.pixelRatio;
  7. }
  8. });

然后挖坑在布局页面

  1. class="sidebar" style="height: {{sidebarHeight}}px;">
  2. src="{{item.avatar.attributes.url}}" mode="scaleToFit" bindtap="avatarTap" data-object-id="{{item.objectId}}" style="width:{{imageWidth}}px; height: {{imageWidth}}px;"/>

最后在js中实现数值

  1. setImageWidth: function () {
  2. var screenWidth = getApp().screenWidth;
  3. var imageWidth = (screenWidth - 130) / 3;
  4. this.setData({
  5. imageWidth: imageWidth
  6. });
  7. },
  8. setSideHeight: function () {
  9. this.setData({
  10. sidebarHeight: getApp().screenHeight
  11. });
  12. },

如图:

源码下载:

http://git.oschina.net/dotton/lendoo-wx

,本文涉及代码存于/pages/category/category文件夹中。

二:tomcat http 转 https

作者:angrypanda_panpan,来自

原文地址


由于需要使用https协议,在使用用腾讯云的服务器时,负载均衡服务器(SSL证书部署在此服务器上)与业务服务器上的apache之间使用的是http,apache与tomcat之间也使用的是http,这样导致两个问题,tomcat 在redirect的时会跳转到

http://127.0.0.1

解决方案:
1.在tomcat,service.xml中Connector 增加proxyName,proxyPort-->解决跳转到127.0.0.1的问题

  1. port="8080" protocol="HTTP/1.1"
  2. connectionTimeout="20000"
  3. proxyName="test9.icolor.com.cn"
  4. proxyPort="443"
  5. redirectPort="8443" />

2.在apache的config中增加 RequestHeader set X-Forwarded-Proto "https"-->解决http转https的问题

  1. ProxyPass / http://127.0.0.1:8080/
  2. ProxyPassReverse / http://127.0.0.1:8080/
  3. RequestHeader set X-Forwarded-Proto "https"

三:加密解密算法的nodejs实现

作者:大球和二憨,来自

授权地址


接口如果涉及敏感数据(如

wx.getUserInfo

当中的 openid ),接口的明文内容将不包含敏感数据。开发者如需要获取敏感数据,需要对接口返回的加密数据( encryptData )进行对称解密。 解密算法如下:

对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。
对称解密的目标密文为 Base64_Decode(encryptData),
对称解密秘钥 aeskey = Base64_Decode(session_key), aeskey 是16字节
对称解密算法初始向量 iv = aeskey, 同样是16字节

  1. module.exports={
  2. getSessionKeyByCode:{
  3. url:"https://api.weixin.qq.com/sns/jscode2session",
  4. method:"GET",
  5. params: {
  6. appid:"wx408ea534cb79567e",
  7. secret:"e4fe5b9c97b2d7e1a68e14163e48ac8b",
  8. js_code:'',
  9. grant_type:"authorization_code"
  10. }
  11. }}
  12. exports.service = function (req, res) {
  13. var code = req.query.code;
  14. var encryptData = decodeURIComponent(req.query.encryptData);
  15. reqInfo.getSessionKeyByCode.params.js_code = code;
  16. httpUtil.get(reqInfo.getSessionKeyByCode).then(function (data) {
  17. var aeskey = new Buffer(data.session_key, 'base64');
  18. var iv = aeskey;
  19. // AES-128-CBC对称解密算法
  20. var decrypt = function (a, b, crypted){
  21. crypted = new Buffer(crypted, 'base64');
  22. var decipher = crypto.createDecipheriv('aes-128-cbc', a, b);
  23. var decoded = decipher.update(crypted,'base64','utf8');
  24. decoded += decipher.final('utf8');
  25. return decoded;
  26. };
  27. var dec = decrypt(aeskey,iv,encryptData);
  28. var result = {};
  29. try{
  30. result = JSON.parse(dec);
  31. }catch(e){
  32. logger.error(e);
  33. result = {};
  34. }
  35. res.json({
  36. code: 1,
  37. data: result
  38. });
  39. }).catch(function(err){
  40. logger.error(err);
  41. res.json({
  42. code: 0,
  43. data: {}
  44. });
  45. })
  46. };

PS 目前微信小程序开发者文档中,已给出各种语言的解密代码。并且解密密钥规定也有所调整。请依开发者文档为准。

https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html

鲜花
鲜花
握手
握手
雷人
雷人
路过
路过
鸡蛋
鸡蛋
分享至 : QQ空间
收藏