微信小程序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.mzph.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 查询,没有我们想要的…