手上有个微信小程序项目,因为对Python相对熟悉一些,打算后端用python写,具体采用python 轻量级的flask框架。

在做的过程中,有些问题需要考虑,记录在下边.

1. 开发的小程序后端怎么区分不同的小程序用户?

  或者说有哪些属性可以唯一的标识一个用户呢?首先想到的是 微信号,手机号,微信号好像现在还没有API可以获取,手机号又比较麻烦还涉及到读取用户信息,进一步的做法是用openid, unionid, 比如让用户每次请求都带上openid, 然后在后台看是否有这个Openid 信息,这是一种方法,这样做相当于把openid 当做web开发里常用的session id 来使用了,区分用户的作用是起到了,但是用一个一成不变的openid 来识别用户是有安全风险的,万一泄露了别人也可以伪装成你来像后台发请求. 既然提到了session id, 那么更好的方案应该是在后台维护 自定义登录态的session[1] 和 openid 的Map表,前后端的用户唯一标识用session id,当识别到是一个的用户的 session 就根据map表找到openid, 再做进一步的操作.

我的小程序在开始阶段就是用 openid放在payload里来识别用户. 有没有更更好的方案呢?应该上token机制,OAuth或者JWT走起,就更加安全了. 我最终选用的方案是 我的flask 学习笔记 里的第7条用到的token方案,简单好用!

2. 小程序怎么同步调用?

  看到微信小程序的API 都是异步调用的,比如 app.onLauch 和 page.onLoad, 虽然app.onLauch 先与page.onLoad调用,但是很可能onLoad 执行完成以后onLauch才完成。但是有些时候我们再onLoad里又依赖于onLoad 执行的结果,这时候怎么做到同步调用呢?现在我还不知道,如果有大神有幸看到这里,多谢指点!好像有个callback 功能,还没有去试过

3. page里可以根据变量自动跳转到其他界面吗?

  目前没有找到自动跳转的方法, 都是需要用户触发的,用户触发的操作可以是在wxml马上跳转 (如 <nagivator>), 也可以是在js 里调用API跳转(如 wx.redirect)

4. flask 是怎么处理并发的,应用程序需要考虑多进程多线程问题吗?

  flask 的app.run()有两个参数threaded和processes可以控制多线程和多进程,默认threaded=False, process=1, 也就是默认不支持多线程和多进程. 下面源码可以看出也不能同时支持多线程和多进程

def make_server(host=None, port=None, app=None, threaded=False, processes=1,request_handler=None, passthrough_errors=False,ssl_context=None, fd=None):"""Create a new server instance that is either threaded, or forksor just processes one request after another."""if threaded and processes > 1:raise ValueError("cannot have a multithreaded and ""multi process server.")elif threaded:return ThreadedWSGIServer(host, port, app, request_handler,passthrough_errors, ssl_context, fd=fd)elif processes > 1:return ForkingWSGIServer(host, port, app, processes, request_handler,passthrough_errors, ssl_context, fd=fd)else:return BaseWSGIServer(host, port, app, request_handler,passthrough_errors, ssl_context, fd=fd)

BaseWSGIServer 这个类是使用IO 多路复用的, 关于IO多路复用,可以参考我另一个篇文章 什么是IO多路复用

Ref:

flask 源码浅析(flask 如何处理请求(多线程,多进程,IO多路复用))

Ref:

[1] 微信小程序中做用户登录与登录态维护的实现详解

[2] 小程序的登录和数据解密全解析

转载于:https://www.cnblogs.com/mashuai-191/p/9475781.html

微信小程序 后端用Flask实现相关推荐

  1. python写小程序后端-微信小程序 后端用Flask实现

    手上有个微信小程序项目,因为对Python相对熟悉一些,打算后端用python写,具体采用python 轻量级的flask框架. 在做的过程中,有些问题需要考虑,记录在下边. 1. 开发的小程序后端怎 ...

  2. chatgpt智能问答微信小程序+后端源码+视频搭建教程

    chatgpt智能问答微信小程序+后端源码+视频搭建教程,这是一套微信小程序,后端是thinkphp框架为接口的,后端是前后端分离用elmentUI的源码框架. 小狐狸GPT付费体验系统是一款基于Th ...

  3. 微信小程序后端java服务商分账实现

    微信小程序后端java服务商分账实现 最近公司申请微信服务商,需要给第三方提供支付.分账功能. 商户调用服务商统一支付 首先,服务商小程序支付,基本与普通商户小程序支付一致 支付使用服务商统一下单接口 ...

  4. 用 Django 开发微信小程序后端实现用户登录

    本文将介绍采用 Django 开发微信小程序后端,通过将用户模块进行重构,并采用JWT来进行用户认证,来解决以下问题: 微信小程序不支持 Cookie,因此不能采用 Django 默认的 Sessio ...

  5. 关于开发微信小程序后端linux使用xampp配置https

    关于开发微信小程序后端linux使用xampp配置https 背景 由于最近开发微信小程序,前后端交互需要使用https协议,故需要配置https服务 服务器环境 服务器系统 ubuntu 环境 xa ...

  6. 微信小程序后端框架|微信公众号后端框架(C# WebAPI)

    微信小程序后端框架|微信公众号后端框架(C# WebAPI) 微信小程序 简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的 ...

  7. python微信小程序后端开发_使用django开发微信小程序后端

    tips: 本文面向的对象是已经会使用django开发web后端的人员 微信小程序后端与普通web的区别 微信小程序的后端开发和普通的restful API 大致上相同,只不过要注意以下几点限制 必须 ...

  8. Laravel 微信小程序后端实现用户登录的示例代码

    Laravel 微信小程序后端实现用户登录的示例代码 这篇文章主要介绍了Laravel 微信小程序后端实现用户登录的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值 ...

  9. 微信小程序python flask_Python Flask 搭建微信小程序后台详解

    前言: 近期需要开发一个打分的微信小程序,涉及到与后台服务器的数据交互,因为业务逻辑相对简单,故选择Python的轻量化web框架Flask来搭建后台程序.因为是初次接触小程序,经过一番摸索和尝试,个 ...

最新文章

  1. 使用Tape和Vue Test Utils编写快速的Vue单元测试
  2. 用OpenCV搭建活体检测器
  3. vue接入萤石云_智能家居不香吗?萤石转型:或者臣妾做不到,或者费力不讨好...
  4. 20180104小测
  5. 韩研究人员声称:创造出了一块“不可破坏”的芯片!
  6. 递归方程组解的渐进阶的求法——代入法
  7. 微软游戏开发工具XNA 2.0[转自驱动之家]
  8. java集合按大小排序_JAVA中对List根据map某个key值从小到大顺序进行排序
  9. 28 数组中出现次数超过一半的数字
  10. mongo报错WiredTiger.wt, connection: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
  11. 自动驾驶 9-6: EKF 的替代方案 - 无迹卡尔曼滤波器
  12. 【自然语言处理】【知识图谱】知识图谱表示学习(一):TransE、TransH、TransR、CTransR、TransD
  13. 拼多多API接口:item_search - 根据关键词取商品列表
  14. 解决word2016复制粘贴后一直未响应
  15. Android快速开发整理(库、插件,kotlin枚举注解
  16. cadence 通孔焊盘_allegro软件通孔类焊盘制作方法及步骤
  17. 2012-04-30《说说老朋友》
  18. sqoop导入时候显示ERROR
  19. 演绎另类黑客马拉松,机智云中国第二届智能硬件36小时开发大赛完美收官
  20. Java分布式跟踪系统Zipkin(二):Brave源码分析-Tracer和Span

热门文章

  1. easyuefi只能在基于uefi启动的_systemd时代的开机启动流程(UEFI+systemd)
  2. iOS App 自动登录的安全性分析
  3. xdebug使用教程
  4. latex的图的排列方法_latex 图片并排、竖排
  5. ros 相机标定 sensor_msgs/CameraInfo Message 数据类型及含义
  6. 认知控制和执行功能常用的实验范式(史上最全)
  7. linux生成目录间补丁,linux之打补丁
  8. 高端内存映射之kmap持久内核映射--Linux内存管理(二十)
  9. mysql使用新建用户的好处_入门MySQL——用户与权限
  10. 房内有一只猴子、一个箱子,天花板上挂了一串香荷,其位置关系如图2 33所示,猴子为了拿到 香蕉,它必須把箱子推到香荷下面,然后再爬到箱子上.请定义必要的谓词,写出问题的初始状态(即图 2 33所示的