使⽤django开发⼩程序后端
tips: 本⽂⾯向的对象是已经会使⽤django开发web后端的⼈员
⼩程序后端与普通web的区别
⼩程序的后端开发和普通的restful API ⼤致上相同,只不过要注意以下⼏点限制
必须使⽤HTTPS协议请求后端服务器
不⽀持COOKIE
不⽀持django内置的user登录, 因为它使⽤的是的⽤户系统
应对⽅法
不⽀持cookie, django原⽣的session机制就会失效
不⽀持django内置的user登录, 因为它使⽤的是的⽤户系统
然⽽⽹上有很多的jwt开源项⽬, ⽐如django-jwt, rest-framework-jwt, 你都可以使⽤, 但是却不适⽤于
⼩程序, 为什么这么说? 是因为这两个项⽬都和django内置的user相耦合, 在上边提出的第三个问题的地⽅会引起问题, 在尝试了rest-framework-jwt发现问题后, 我毅然决定⾃⼰使⽤pyjwt实现⼀个⽤户登录/鉴权的组件.
⾸先要知道⼩程序的登录流程是:
django登录注册功能1. 客户端请求⽤户授权
2. ⽤户授权成功
3. 客户端或得到⽤户基本信息(包括code,没有openid的⽤户明⽂信息, 有openid的加密后的信息, 解密向量iv)
4. 客户端把返回的信息发送到服务器
5. 服务器使⽤code去服务器换取session_key
6. 服务器⽤这个session_key+iv去解密⽤户密⽂, 得到⽤户完整信息(基本+openid)
7. 将⽤户在服务器登录, 维持⽤户session(这⾥的失效时间约定是30天)
因为jwt始终使⽤http头部的token进⾏验证这⾥我的思路是:
1. ⽤户登录后, 返回客户端token, 并在缓存创建⽤户的session信息
2. 客户端请求时附加http头Authorization=JWT <token>
3. 使⽤中间件检验http头的token, 审查通过则在request上追加⼀个jwt_user属性(这⾥不想覆盖django⾃带user), 同时去缓存寻这个⽤户的
session信息, 加载到request.jwt_session, 审查如果不通过则jwt_user设置为None, jwt_session为⼀个空的session对象
4. 使⽤认证⽅法, 对于需要进⾏登录的接⼝检验⽤户是否为None
到这⼀步就已经完成了整个的⽤户鉴权/session持久化流程, 如果你只是为了了解django开发⼩程序注意的点到这⾥已经可以结束了, 下边我要介绍的是我实现的⼀套中间件逻辑, 有兴趣可以拿去直接使⽤.
注: 2017.1.15我这个组件还没有完整的readme, 后续会加上

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。