微信小程序python token驗證_微信小程序python 用戶認證

1e5265d229be

按流程圖來

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

// 登錄

wx.login({

success: res => {

console.log(res)

// 發送 res.code 到后臺換取 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

//后臺用戶表保存

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表上進行字段拓展,不然重寫起來會很麻煩,拓展方法如下

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默認字段,需要保存用戶頭像,用戶省市等字段只要在原有基礎上新增即可

1e5265d229be

生成3rd session

先在后臺配置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設置過期時間,具體配置查看文檔

JWT_AUTH = {

'JWT_VERIFY_EXPIRATION': False

}

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

from rest_framework_jwt.views import obtain_jwt_token

#...

urlpatterns = [

'',

# ...

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

]

通過POST用戶的用戶名和密碼獲取token

wx.request({

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

method: 'POST',

data: {

'username': openid, //這里我是用openid當作用戶名

'password': session_key //用session_key當作密碼

},

success: function(jwt) {

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

//前面是base64后面是簽名,用.隔開

//將jwt_token放入緩存備用

var jwt_token = jwt.data.token

wx.setStorageSync('jwt_token', jwt_token)

self.globalData.jwt_token = jwt_token

}

})

后端配置時需要加上authentication_classes進行認證

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',)

#認證配置

permission_classes = (IsAuthenticated,)

authentication_classes = (JSONWebTokenAuthentication,)

使用方法

在請求加了認證的view時,如果不在head中帶入jwt_token,請求401

1e5265d229be

在header中帶入請求數據成功

//從緩存中取出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){

//成功請求到商品數據

console.log(res)

}

})

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287616.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287616.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287616.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#實用技巧之:將圖標打包進DLL并讀取

概述個人的項目界面有時候需要用到很多圖標,這些圖片可以建立一個文件夾單獨存放,但有時涉及到多臺設備部署的話,每臺設備都需要隨項目一起拷貝過去,如果忘記了界面顯示就會出問題,有沒有更好的辦法解決?有…

強制IE瀏覽器或WebBrowser控件使用指定版本顯示網頁

最近為了抓取淘寶的成交數據,用C#的WebBrowser控件開發了一個簡單的程序. 發現WebBrowser控件默認使用的版本是IE7的兼容模式.而淘寶的寶貝詳細頁居然對IE7的支持不是很好. 成交記錄無法顯示,而我本機安裝的是IE10,那么有沒有辦法使我的WebBrowser控件的使用的IE版本高點呢? 查…

【計算機圖形學】實驗:VB.net環境下的繪制貝賽爾(Bezier)自由曲線完整實驗操作步驟

一、實驗目的 熟練掌握在.net環境下繪制貝賽爾自由曲線。 二、實驗準備 學習生成貝賽爾自由曲線的基本算法,以及在.net環境下繪制貝賽爾自由曲線的基本方法(DrawBezier和DrawBeziers)。 三、實驗內容 在.net環境中繪制二次、三次貝賽爾曲線。 四、實驗過程及步驟 (包…

Git之撤銷add操作

1 問題 git add file或者git add folder錯了 2 解決辦法 git reset HEAD 如果后面什么都不跟的話 就是上一次add 里面的全部撤銷了 git reset HEAD XXX/XXX/XXX.java 就是對某個文件進行撤銷了 git reset HEAD XXX/XXX/XXX/. 就是對某個文件夾進行撤銷了

配置FTP服務2(vsftpd 配置虛擬賬號)

1. 安裝軟件yum -y install vsftpd* yum -y install pam* yum -y install db4*2. 建立虛擬賬號相關聯的系統賬號useradd virftp -s /sbin/nologin 3. 建立虛擬賬戶相關的文件touch /etc/vsftpd/vsftpd_login并把你要建立的用戶寫到里面,奇數行是用戶名&#xff…

《零基礎看得懂的C++入門教程 》——(10)面向對象

一、學習目標 了解C類是什么了解類對象與類型修飾一樣進行創建了解了類的屬性如何使用了解了類方法的使用方法 目錄 預備第一篇,使用軟件介紹在這一篇,C與C使用的軟件是一樣的,查看這篇即可:《軟件介紹》 想了解編譯原理和學習…

appinventor連接MySQL_appinventor如何連接sqlserver數據庫

java中使用jdbc連接sqlserver數據庫步驟:1。JDBC連接SQLServer的驅動安裝,前兩個是屬于數據庫軟件,正常安裝即可(注意數據庫登陸不要使用windows驗證)將JDBC解壓縮到任意位置,比如解壓到C盤programfiles下面,并在安裝目錄里找到sqljdbc。jar文件,得到其路徑開始配置…

淺談JSONP

這是我在13年初寫的文章,當時懵懵懂懂寫下了自己對JSONP的理解。 文章原文 博客 歡迎訂閱 提到JSONP,我當時在網上找了無數帖子也沒有看懂它。那些文章大同小異,都是講到JSONP原理以后就戛然而止,把我們這些初學者搞得云里霧里。所…

Asp.Net Core 7 preview 4 重磅新特性--限流

前言限流是應對流量暴增或某些用戶惡意攻擊等場景的重要手段之一,然而微軟官方從未支持這一重要特性,AspNetCoreRateLimit這一第三方庫限流庫一般作為首選使用,然而其配置參數過于繁多,對使用者造成較大的學習成本。令人高興的是&…

【計算機圖形學】實驗:C#.net環境下采用GDI+圖形特技處理案例教程

一、實驗目的 掌握在.net環境下對圖形特技的處理方法。 二、實驗準備 學習在.net環境下讀取圖像文件、改變顏色等基本知識。 三、實驗內容 在.net環境中實現對圖像的灰度化處理、柔化和銳化、底片濾鏡、淡入淡出以及浮雕、油畫和木刻等藝術效果。 四、實驗過程及步驟 (…

Windows之在終端打開當前目錄的命令

1 問題 Windows在終端打開當前目錄的命令 2 命令如下 1)、通過start命令 start . 2)、通過explorer命令 explorer .3 linux終端打開當前目錄命令如下 nautilus . 4 mac終端打開當前目錄命令如下 open .

孫鐘秀-《 操作系統教程 》(第4版)注釋(稿)

http://www.valleytalk.org/2014/12/30/%E5%AD%99%E9%92%9F%E7%A7%80-%E3%80%82%E3%80%8A-%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%95%99%E7%A8%8B-%E3%80%8B%EF%BC%88%E7%AC%AC4%E7%89%88%EF%BC%89%E6%B3%A8%E9%87%8A%EF%BC%88%E7%A8%BF/轉載于:https://www.cnblogs.com/zen…

Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念區分

如果開發的應用用戶較多,那么必須保證應用在多個版本不同的設備上能夠正確的運行。這就要求對各個版本比較熟悉,知道在什么版本中加入了什么新的功能或特性。但是Android的版本太多了,是個令人頭疼的問題。如果想了解Android的版本差異&#…

mysql交叉編譯 cmake_CMake交叉編譯配置

很多時候,我們在開發的時候是面對嵌入式平臺,因此由于資源的限制需要用到相關的交叉編譯。即在你host宿主機上要生成target目標機的程序。里面牽扯到相關頭文件的切換和編譯器的選擇以及環境變量的改變等,我今天僅僅簡單介紹下相關CMake在面對…

[python opencv 計算機視覺零基礎到實戰] 一 opencv的helloworld

前置條件 說明:本系列opencv實戰教程將從基礎到實戰,若只是簡單學習完python也可以通過該教程完成一般的機器學習編程;文中將會對很多python的基礎內容進行講解,但由于文章定位的原因將不會贅述過多的基礎內容,基礎內…

Android之用setColorFilter在ImageView上面覆蓋一層灰色的圖層

1 問題 在圖片上面覆蓋一層灰色的圖層 2 解決辦法 比如點擊圖片覆蓋黑色 imageView.setColorFilter(ContextCompat.getColor(context, R.color.picture_color_black_80), PorterDuff.Mode.SRC_ATOP); 然后點擊圖片還原回來 imageView.setColorFilter(ContextCompat.getCol…

【計算機圖形學】實驗:VB.net環境下的綜合繪圖與交互技術案例教程

一、實驗目的 掌握在.net環境下的繪圖軟件界面設計與交互技術。 二、實驗準備 學習在.net環境下的界面設計的一般原理與交互技術等基本知識。 三、實驗內容 將前7個實驗內容集成到一個界面下,如直線段、圓、矩形與曲線的繪制填充,以及對圖像的處理&…

IE8 兼容background-size的解決辦法

.bgpic { background-image:url(); background-size:cover; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src,sizingMethodscale); } 注意progid里面的src路徑是絕對路徑或是相對于頁面的路徑。? div class"bgpic"style"width:200px;height:1…

從頭開始敲代碼之《從BaseApplication/Activity開始》

轉載請注明出處王亟亟的大牛之路 其安易持,其未兆易謀;其脆易泮,其微易散。為之于未有,治之于未亂。合抱之木,生于毫末;九層之臺,起于壘土;千里之行,始于足下。為者敗之…

查缺補漏系統學習 EF Core 6 - 原始 SQL 查詢

推薦關注「碼俠江湖」加星標,時刻不忘江湖事這是 EF Core 系列的第五篇文章,上一篇文章盤點了 EF Core 中的幾種數據查詢方式。但是有有時候,我們可能無法用標準的 LINQ 方法完成查詢任務。或者編譯后的 LINQ 查詢,沒有我們想要的…