一、用户认证
传统网站:前端后台都保存【相当于古代的虎符】
- 前端向服务器发送用户名和密码
- 服务器验证后,保存在session内,给前端返回一个session_id
- 后期,前端携带session_id发送到服务器,服务器通过session_id来认证用户
JWT(Json Web Token):完全保存在前端(带上签名,服务器知道有没有篡改)【相当于现代的签名】
- 前端向服务器发送用户名和密码
- 服务器验证后,给前端返回一个Token(带签名)
- 后期,前端携带Token发送到服务器,服务器通过Token来认证用户
小程序:(多了个外层:小程序借助微信体系用户)
- 前端向微信获得
code(wx.login()获得,相当于验证码,有效期五分钟)
- 服务器向微信接口,发送申请小程序时给的appid和appsecret及code(验证码),返回
openid(相当于Token)和session_key
- 后期,前端携带openid发送到服务器,服务器通过openid来认证用户
说明:
- 因为借助微信体系,所有微信来认证,那服务器要获得Token,于是携带上该小程序证件及验证码向微信对应接口来获取
open_id(相当于Token)(微信用户体系对于该小程序的身份证编码)
、UnionID(微信用户体系对于该开发公司的身份证编码)
、session_key
session_key:
- 因为数据时微信给前端的,为了保证开发者服务器能获得不被篡改的数据
- 微信会对敏感重要的开放数据
以session_key进行加密
服务器再通过session_key来解密。保证了服务器获得正确无误的数据
(优先保证服务器获得正确的数据)- 前端需要这些数据,再由开发者服务器返回。
补充:
session或Token等替代用户名和密码来和服务器认证的,都有时效性,保证数据的安全。
二、转发
- "分享监听”能力调整
- 无法知晓是否分享状态(是否成功,是分享给个人还是群聊)
- 只有用户主动点击小程序进来,才会携带一些相关信息,如群的标识
1.添加转发监听事件:
onShareAppMessage(res) {
// res:
// @from <string> "button"/"menu" 判断是右上角转发菜单还是分享按钮触发的
// @target obj 获得触发源对象
// @webViewUrl
// 通过res,可以return不同的,自定义转发内容
return {
title: '转发的标题',
path: "/pages/index/index",
imageUrl:undefined //如果没有值,默认为页面截图
};
}
只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮,及分享按钮点击才生效。
2.转发的配置(目前为止只能配置,转发回来是否携带shareTicket)
1.这个函数用于转发的配置,及转发菜单的显示
wx.showShareMenu({
withShareTicket:false
success:function(){}
})
2.这个函数用于隐藏转发菜单
wx.hideShareMenu({
success:function(){}
})
3.更新菜单配置
wx.updateShareMenu(Object object)
3.页面添加分享按钮
<button open-type='share'>点击分享</button>
4.用户点击分享卡片进来后,获取转发信息
1.前提:配置 withShareTicket:true
2.在 App.onLaunch或 App.onShow获取到一个 `shareTicket`
3.调用wx.getShareInfo(Object object) 获取转发详细信息
wx.getShareInfo({
shareTicket:在 App.onLaunch或 App.onShow获取到一个 `shareTicket`
success:function(res){
res.encryptedData 获得完整数据及加密数据
iv:加密算法的初始向量
}
})
4.获得的开放数据(加密),发送给后台服务器,解密好后发给前端
相关问题:
- 点击转发卡片进来,如果是
开发版则会加载开发版小程序
(不管是不是最新的开发版版本,测试时最好用该手机先扫一下最新的),如果是线上版则会加载线上的小程序- 然后wx.reLaunch(重加载该页面)(
首先,会执行app.js
)所以,需要的数据,要确保在app.json中能获得,否则分享的时候要带上该参数
网友评论