Django实战-小程序端cookie保存至storage
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
实现了小程序端的登录授权和Django服务端的 code2session 接口授权。
流程
1.使用微信小程序登录和获取用户信息Api接口
2.把Api获取的用户资料和code发送给django后端
3.通过微信接口把code换取成openid
4.后端将openid作为用户名和密码
5.后端通过JSON web token方式登录,把token和用户id传回小程序
6.小程序将token和用户id保存在storage中
下次请求需要验证用户身份的页面时,在header中加入token这个字段。
一、注销
① 服务端清除 session
小程序的注销可以通过向服务端发起清除 session 的请求。在小程序授权登录后,服务端是将 openid 标记在 session 中。
from django.http import JsonResponse
def logout(request):
request.session.clear()
response = wrap_json_response(code=ReturnCode.SUCCESS)
return JsonResponse(data=response, safe=False)
服务端路由
from django.urls import path
from . import views
urlpatterns = [
path("logout", views.logout, name="logout"),
]
② 小程序端注销
二、获取状态
① 服务端判断用户是否已经授权
在用户登录授权中,服务端就已经用 is_authorized 在 session 中标记了登录成功的用户。
def already_authorized(request):
is_authorized = False
if request.session.get("is_authorized"):
is_authorized = True
return is_authorized
② 服务端判断用户是否已经登录
def get_status(request):
if already_authorized(request):
data = {"is_authorized": 1}
else:
data = {"is_authorized": 0}
response = CommonResponseMixin.wrap_json_response(data=data, code=ReturnCode.SUCCESS)
return JsonResponse(response, safe=False)
服务端路由
from django.urls import path
from . import views
urlpatterns = [
path("status", views.get_status, name="get_status"),
]
小程序端获取状态