日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

微信小程序python token验证_微信小程序python 用户认证

發(fā)布時(shí)間:2023/12/4 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信小程序python token验证_微信小程序python 用户认证 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

按流程圖來(lái)

先通過(guò)wx.login()獲取code,再通過(guò)我們后臺(tái)配置的接口獲取openid和session_key

// 登錄

wx.login({

success: res => {

console.log(res)

// 發(fā)送 res.code 到后臺(tái)換取 openId, sessionKey, unionId

wx.request({

url: api.GET_OPENID, //

data: {

js_code: res.code

},

success: function (res) {

var openid = res.data.openid

var session_key = res.data.session_key

//獲取openid,session_key

//后臺(tái)用戶表保存

wx.request({

url: api.USER,

method: "POST",

data: {

openid : openid,

session_key : session_kay

},

success: function (res) {

if (res.data.status == 'success') {

//在緩存中保存用戶id和openid備用

wx.setStorage({

key: 'userid',

data: res.data.userid,

});

wx.setStorage({

key: 'openid',

data: openid,

})

} else {

wx.showModal({

title: '提示',

showCancel: false,

content: '獲取openid失敗',

})

}

}

})

}

})

}

})

在這里的用戶表最好是在django自帶的user表上進(jìn)行字段拓展,不然重寫(xiě)起來(lái)會(huì)很麻煩,拓展方法如下

from django.contrib.auth.models import AbstractUser

# Create your models here.

class User(AbstractUser):

"""

用戶新增字段

"""

name = models.CharField(max_length=30, null=True, blank=True, verbose_name="姓名")

下面是django的user默認(rèn)字段,需要保存用戶頭像,用戶省市等字段只要在原有基礎(chǔ)上新增即可

生成3rd session

先在后臺(tái)配置jwt

安裝 pip install djangorestframework-jwt

在你的settings.py,添加JSONWebTokenAuthentication到Django REST框架DEFAULT_AUTHENTICATION_CLASSES。

REST_FRAMEWORK = {

'DEFAULT_PERMISSION_CLASSES': (

'rest_framework.permissions.IsAuthenticated',

),

'DEFAULT_AUTHENTICATION_CLASSES': (

'rest_framework_jwt.authentication.JSONWebTokenAuthentication', #

'rest_framework.authentication.SessionAuthentication',

'rest_framework.authentication.BasicAuthentication',

),

}

#JWT設(shè)置過(guò)期時(shí)間,具體配置查看文檔

JWT_AUTH = {

'JWT_VERIFY_EXPIRATION': False

}

#在您urls.py添加以下URL路由以啟用通過(guò)POST獲取令牌包括用戶的用戶名和密碼。

from rest_framework_jwt.views import obtain_jwt_token

#...

urlpatterns = [

'',

# ...

url(r'^api-token-auth/', obtain_jwt_token),

]

通過(guò)POST用戶的用戶名和密碼獲取token

wx.request({

url: api.api-token-auth,//url配置

method: 'POST',

data: {

'username': openid, //這里我是用openid當(dāng)作用戶名

'password': session_key //用session_key當(dāng)作密碼

},

success: function(jwt) {

//jwt格式:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InhpZWhhbyIsImV4cCI6MTUzNTM3ODQ2OCwiZW1haWwiOiIzNDg2OTg1ODhAcXEuY29tIn0.8rXFK_K2q8474LxYrCuuNJT93PkZMzi1JX6fVproXrE

//前面是base64后面是簽名,用.隔開(kāi)

//將jwt_token放入緩存?zhèn)溆?/p>

var jwt_token = jwt.data.token

wx.setStorageSync('jwt_token', jwt_token)

self.globalData.jwt_token = jwt_token

}

})

后端配置時(shí)需要加上authentication_classes進(jìn)行認(rèn)證

from rest_framework.permissions import IsAuthenticated

from rest_framework_jwt.authentication import JSONWebTokenAuthentication

# 商品表

class goodsViewSet(viewsets.ModelViewSet):

queryset = Goods.objects.all()

serializer_class = goodsSerializers

filter_class = GoodsFilter

filter_backends = (DjangoFilterBackend, filters.SearchFilter)

search_fields = ('name',)

#認(rèn)證配置

permission_classes = (IsAuthenticated,)

authentication_classes = (JSONWebTokenAuthentication,)

使用方法

在請(qǐng)求加了認(rèn)證的view時(shí),如果不在head中帶入jwt_token,請(qǐng)求401

在header中帶入請(qǐng)求數(shù)據(jù)成功

//從緩存中取出jwt_token,并按文檔用法拼接,在header中帶入Authorization

// JWT +jwt_token

var jwt_token = 'JWT ' + wx.getStorageSync('jwt_token')

wx.request({

url: 'http://127.0.0.1:8000/mall/goods/',

header:{

'Authorization': jwt_token

},

success:function(res){

//成功請(qǐng)求到商品數(shù)據(jù)

console.log(res)

}

})

總結(jié)

以上是生活随笔為你收集整理的微信小程序python token验证_微信小程序python 用户认证的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。