亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

微信小程序登錄對接Django后端實現JWT方式驗證登錄詳解

2020-03-21 15:50:32
字體:
來源:轉載
供稿:網友

先上效果圖

微信小程序,Django,后端,JWT,驗證登錄

微信小程序,Django,后端,JWT,驗證登錄

點擊授權按鈕后可以顯示部分資料和頭像,點擊修改資料可以修改部分資料。

流程

1.使用微信小程序登錄和獲取用戶信息Api接口
2.把Api獲取的用戶資料和code發送給django后端
3.通過微信接口把code換取成openid
4.后端將openid作為用戶名和密碼
5.后端通過JSON web token方式登錄,把token和用戶id傳回小程序
6.小程序將token和用戶id保存在storage中
下次請求需要驗證用戶身份的頁面時,在header中加入token這個字段

微信小程序代碼

獲取用戶信息的方法這里不展示,可以在微信小程序文檔中看到

登錄方法

login: function(event) {  wx.login({   success: res => {    console.log(res)    //請求后端換取openid的接口    http.request({     url: '/get-openid/',     method: 'POST',     data: {     //將code傳到后端      jscode: res.code     },     success: res => {      //獲取到openid作為賬號密碼      console.log(res)      console.log(app.globalData.userInfo)      http.request({       url: '/wx-login/',       method: 'POST',       data: {        openid: res.openid,        session_key: res.session_key,        nickname: app.globalData.userInfo.nickName,        avatar_url: app.globalData.userInfo.avatarUrl,        gender: app.globalData.userInfo.gender       },       //登錄成功后返回token保存在storage中       success: res => {        console.log(res)        //token存入storage        wx.setStorageSync('jwt_token', res.token)        wx.setStorageSync('user_id', res.user_id)        this.reFreshUserProfile()        //登錄狀態置為true        this.setData({         isLogin: true,         hasUserInfo: true        })        app.globalData.isLogin = true       }      })     }    })   }  }) }

注銷方法

 logout: function(res) {  this.setData({   isLogin:false,   hasUserInfo:false  })  app.globalData.isLogin = false  wx.removeStorageSync('jwt_token')  wx.removeStorageSync('user_id') },

Django后端的實現

首先安裝djangorestframework-jwt

這里不使用他默認的登錄接口,如下所示

微信小程序,Django,后端,JWT,驗證登錄

它提供了手動簽發token和解密token的功能,因此最好自己實現

手動簽發token

 jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER  jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER  payload = jwt_payload_handler(user)  token = jwt_encode_handler(payload)

手動解密token

  jwt_decode_handler = api_settings.JWT_DECODE_HANDLER  user_dict = jwt_decode_handler(token)  user_id = user_dict['user_id']

后端換取openid

class OpenId:  def __init__(self, jscode):    self.url = 'https://api.weixin.qq.com/sns/jscode2session'    self.app_id = env.str('APPID')    self.app_secret = env.str('APPSECRET')    self.jscode = jscode  def get_openid(self):    url = self.url + "?appid=" + self.app_id + "&secret=" + self.app_secret + "&js_code=" + self.jscode + "&grant_type=authorization_code"    res = requests.get(url)    try:      openid = res.json()['openid']      session_key = res.json()['session_key']    except KeyError:      return 'fail'    else:      return openid, session_key

后端返回openid接口實現

這里只使用簡單的FBV視圖

注:前端傳來的值無法從request.POST中接收到,只能使用如下方法

@require_http_methods(['POST'])@csrf_exemptdef GetOpenIdView(request):  data = json.loads(request.body)  jscode = data['jscode']  openid, session_key = OpenId(jscode).get_openid()  return JsonResponse({    'openid': openid,    'session_key': session_key  })

后端登錄接口實現

如果不存在用戶則自動創建
為了簡單,用戶名和密碼都是openid

@require_http_methods(['POST'])@csrf_exemptdef login_or_create_account(request):  data = json.loads(request.body)  print(data)  openid = data['openid']  nickname = data['nickname']  avatar_url = data['avatar_url']  gender = data['gender']  try:    user = User.objects.get(username=openid)  except User.DoesNotExist:    user = None  if user:    user = User.objects.get(username=openid)  else:    user = User.objects.create(      username=openid,      password=openid,      nickname=nickname,      avatar_url=avatar_url,      gender=gender    )  jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER  jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER  payload = jwt_payload_handler(user)  token = jwt_encode_handler(payload)  res = {    'status': 'success',    'nickname': user.nickname,    'user_id': user.id,    'token': token  }  return JsonResponse(res)

以上就是簡單的微信小程序登錄對接Django的思路,很多地方不嚴謹,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
美女福利视频一区| 2019亚洲日韩新视频| 91精品久久久久久久久不口人| 国产精品综合不卡av| 日韩精品免费视频| 97成人精品区在线播放| 成人免费网站在线看| 欧美黄色片免费观看| 丝袜美腿精品国产二区| 热99精品只有里视频精品| 亚洲天堂免费视频| 国产视频亚洲视频| 欧美日韩中文字幕日韩欧美| 国产成人中文字幕| 欧美综合第一页| 亚洲精品91美女久久久久久久| 欧美日韩国产中字| 亚洲美女在线看| 欧美日韩亚洲视频| 日韩欧美亚洲综合| 欧美激情国产高清| 国产+成+人+亚洲欧洲| 日韩精品电影网| 8x拔播拔播x8国产精品| 国产+成+人+亚洲欧洲| 日韩美女福利视频| 91久久夜色精品国产网站| 欧美极品少妇xxxxⅹ喷水| 欧美激情国产精品| 海角国产乱辈乱精品视频| 亚洲综合大片69999| 成人免费直播live| 久久久久久久久久国产精品| 精品亚洲一区二区三区在线播放| 国产成人精品日本亚洲| 日韩在线视频国产| 日韩欧美精品在线观看| 欧美午夜片欧美片在线观看| 欧美影院久久久| 欧美性极品xxxx娇小| 亚洲国产一区二区三区四区| 97精品在线视频| 91在线高清免费观看| 欧美日韩精品在线播放| 日韩va亚洲va欧洲va国产| 欧美日韩另类视频| 亚洲午夜av久久乱码| 亚洲男子天堂网| 欧美一级在线播放| 国外成人在线播放| 日韩激情视频在线播放| 日韩av中文字幕在线免费观看| 最新日韩中文字幕| 26uuu日韩精品一区二区| 亚洲一二三在线| 国产亚洲成精品久久| 欧美激情免费观看| 色香阁99久久精品久久久| 69久久夜色精品国产69乱青草| 国产精品久久久久999| 欧美尺度大的性做爰视频| 欧美成人在线免费视频| 成人精品网站在线观看| 欧美成人四级hd版| 国产成人精品a视频一区www| 国产视频久久久久久久| 亚洲日韩欧美视频一区| 91丝袜美腿美女视频网站| 在线观看国产精品淫| 欧美影院在线播放| 欧美另类69精品久久久久9999| 欧美国产视频一区二区| 国产精品久久一| 国产精品欧美风情| 91夜夜未满十八勿入爽爽影院| 久久久久久久久久久人体| 丰满岳妇乱一区二区三区| 国产在线高清精品| 亚洲欧美日韩精品久久| 欧美有码在线观看| 日韩有码在线电影| 欧美性视频在线| 中文字幕在线成人| 欧美日韩美女在线观看| 韩国一区二区电影| 久精品免费视频| 欧美夫妻性生活视频| 欧美激情亚洲自拍| 日本精品在线视频| 成人黄色生活片| 久久国产精品视频| 91久久国产综合久久91精品网站| 18性欧美xxxⅹ性满足| 国产精品视频xxxx| 中文字幕国内精品| 久久久久久亚洲精品| 欧美有码在线视频| 精品久久香蕉国产线看观看gif| 欧美日韩国产精品专区| 亚洲精品福利在线| 欧美国产日产韩国视频| 免费av在线一区| 色综合老司机第九色激情| 亚洲成av人影院在线观看| 欧美日韩免费网站| 国产专区欧美专区| 国产一区二区日韩| 亚洲欧洲av一区二区| 日韩美女视频在线观看| 中文字幕亚洲综合久久| 俺去了亚洲欧美日韩| 亚洲欧美日韩在线高清直播| 国产精品久久久久久久久久小说| 国产精品视频yy9099| 日韩日本欧美亚洲| 美日韩精品免费视频| 色综合天天综合网国产成人网| 国产精品情侣自拍| 久久成年人免费电影| 国产丝袜精品第一页| 亚洲97在线观看| 日韩大片在线观看视频| 26uuu另类亚洲欧美日本一| 高清欧美性猛交xxxx黑人猛交| 欧美在线观看网站| 51视频国产精品一区二区| 国产精品高潮粉嫩av| 精品电影在线观看| 亚洲性线免费观看视频成熟| 九色91av视频| 亚洲成人黄色在线观看| 亚洲免费视频在线观看| 成人网欧美在线视频| 2019精品视频| 国产精品亚洲激情| 欧美性受xxxx白人性爽| 免费99精品国产自在在线| 欧美与黑人午夜性猛交久久久| 欧洲成人在线观看| 大胆人体色综合| 日韩av网站电影| 亚洲va久久久噜噜噜久久天堂| 国产成人高清激情视频在线观看| 成人免费大片黄在线播放| 91精品国产综合久久香蕉| 日韩在线观看电影| 久久久免费av| 久久久噜噜噜久久| 欧美日韩国产999| 精品欧美一区二区三区| 国产69精品久久久| 九九热最新视频//这里只有精品| 国产69精品久久久久99| 91av在线免费观看视频| 日韩在线中文字| 在线看国产精品| 国产区精品在线观看| 国产亚洲a∨片在线观看| 国产成人一区二区在线| 亚洲国产精品女人久久久| 国内精品视频久久| 亚洲2020天天堂在线观看| 狠狠色狠狠色综合日日小说| 国产美女精品免费电影|