前言1.小程序作为轻量级的应用,具有开发周期短,能快速迭代的优点,而且还能借助大厂的流量入口,迅速导入用户。这也大概是为啥一些创业公司和团队喜欢用小程序进行产品的快速迭代的原因的。小程序快速的迭代,势必要求后端也能跟得上迭代的进度,因此选择一些优秀成熟的框架是必须的。最近公司需要快速开发一款小程序产品进行试水,给的周期比较短,工作量比较大,就一个后端从框架的搭建到数据库设计、逻辑实现、小程序的配置、服务器的部署、上线等工作均后端完成。综合考虑各种成本因素及用户量的规模,于是就敲定了使用Django作为后端框架。
对比小程序后端开发与普通Web开发的区别2.主要有以下三点区别
小程序中必须使用HTTPS协议请求后端服务器。在小程序中不支持Cookie存储。小程序不支持Django内置的user登录,因为它使用的是微信用户系统。3.应对以上三种问题的解决方案
对于https协议的限制,可以去申请https证书,一般云服务器厂家提供免费申请证书的入口,也可以自己生成证书;生成证书后在nginx配置文件中指定就行。这里有篇文章《nginx使用ssl模块配置HTTPS支持》可参考;小程序不支持Cookie,将导致Django原生的Session机制失效。小程序使用的的是微信的用户系统,所以不支持直接使用Django的内置user登录。4.为了解决上面的2,3问题,可以选择使用JWT来保证用户的在线认证,关于JWT的的细节,将会出文章进行具体说明。简单来说,原先保存在cookie里面的一个随机的session变成保存在https头部的Authorization字段的一个token值(服务端自身加密的,客户端无需解密,只要服务端知道这个token对应这个用户就行)。
5.在后端层面具体做法是将openid做用户名(唯一),密码用长随机数;登录时用直接把code传到后端,后端拿着code换session_info,从里面找到openid查user,然后把user传给django-jwt,手动生成jwt返回小程序;
关于小程序的登录流程6.小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。
7.由上图可以知道微信小程序的登录步骤可以描述为(客户端指的就是小程序):
客户端请求用户授权(wx.login())用户同意并授权成功;客户端获得到用户基本信息(包括code,有openid的加密后的信息,解密向量iv)客户端把返回的信息发送到服务器服务器使用code去微信服务器换取session_key服务器用这个session_key+iv去解密用户密文,得到用户完整信息(基本信息+openid)8.相关的名词及函数解释
9.code临时登录凭证,有效期五分钟,通过wx.login()获取
10.session_key会话密钥,服务端通过code2Session获取
11.openId用户在该小程序下的用户唯一标识,永远不变,服务端通过code获取
12.unionId用户在同一个微信开放平台帐号(公众号,小程序,网站,移动应用)下的唯一标识,永远不变
13.appId小程序唯一标识
14.appSecret小程序的appsecret,可以和code,appId一起换取session_key
15.rawData不包括敏感信息的原始数据字符串,用于计算签名
16.encryptedData包含敏感信息的用户信息,是加密的
17.signature用于校验用户信息是否无篡改
18.iv加密算法的初始向量
19.如何加密解密,可以结合官方文档进行;可以借用成熟的python插件进行,这里不再详细赘述,关于如何生成jwt_token这里简单说明一下:
在setting的配置文件中重写JWT_RESPONSE_PAYLOAD_HANDLERJWT_AUTH{'JWT_EXPIRATION_DELTA':datetime.timedelta(days7),#JWT有效期'JWT_RESPONSE_PAYLOAD_HANDLER':'users.utils.jwt_response_payload_handler'}20.其中jwt_response_payload_handler方法定义如下:
defjwt_response_payload_handler(token,userNone,requestNone):"""自定义jwt认证成功返回数据"""return{'token':token,'user_id':user.id,'username':user.username}在解密用户数据后,生成JWTTokenjwt_payload_handlerapi_settings.JWT_PAYLOAD_HANDLERjwt_encode_handlerapi_settings.JWT_ENCODE_HANDLERpayloadjwt_payload_handler(user)jwt_tokenjwt_encode_handler(payload)21.说明:后面我将会在自己个人博客更新博文,欢迎光顾个人网站
Django作为微信小程序后端实践-微信小程序后端-微信小程序后端JAVA
浏览量:2844
时间:
来源:凤凰人
版权声明
即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。
最新资讯
-

即速应用,赋能企业玩转微信小程序智慧经营
作为国内领军的智慧商业经营服务商,即速应用始终秉承“让每个企业都拥有自己的智慧店铺”的愿景,持续赋能更多企业玩转智慧经营。即速应用旗下拥有“小程序搭建工具-即速应用”、“私域流量专家-即客云”等产品,帮助商家打通互联网全生态营销闭环。 -

即客云2.0重磅更新,让微信小程序运营更简单!
即客云作为一款基于企业微信的第三方工具,现从多维度提供超过30种功能,自上线以来,已服务多家企业,受到一致好评。近期,我们根据客户反馈和市场调研正式推出升级版 即客云2.0!更新了私域运营SOP,群日历功能,批量拓客,客户雷达,消息推送,个人欢迎语,帮助企业更好运用企业微信;同时提升了社群运营工作标准化,提升运营效率,帮助企业实现客户增长,玩转私域流量。 -

零代码 + AI 双轮驱动|即速应用解锁人工智能小程序开发新范式
无需代码、无需 AI 算法功底,普通人也能快速搭建智能小程序。即速应用将人工智能与零代码开发深度融合,推出 AI 智能生成能力,用户通过自然语言描述需求,AI 自动生成小程序页面、功能模块与后台配置,覆盖商城、预约、同城、社区团购等全场景。平台内置 AI 智能推荐、智能客服、用户画像分析等能力,一键对接微信生态,打通视频号、企业微信、短信跳转,帮企业快速落地 AI 应用,抢占智慧经营先机,让每家企业都拥有 AI 驱动的智慧店铺。










