Django 实现jwt认证的示例


Posted in Python onApril 30, 2021

一、 jwt 安装和配置

安装

虚拟环境下执行以下命令

pip install djangorestframework-jwt

配置

总路由配置

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('users/',include('users.urls')),
]

分路由配置

renranapi/apps/users/urls.py

注: obtain_jwt_token:验证用户名密码是否有效,生产token 值,post 方法 -- user应用下 ser 表中去查询,dev.py:user.User

from django.urls import path
from rest_framework_jwt.views import obtain_jwt_token

urlpatterns=[
	path('login/',obtain_jwt_token)
]

postman 测试

Django 实现jwt认证的示例

Django 实现jwt认证的示例

前端

配置登录按钮

login.vue

line32 加上 click 动作

<button @click="loginHandler" class="sign-in-button" id="sign-in-form-submit-btn" type="button">
      <span id="sign-in-loading"></span>
      登录
    </button>

line56 前端请求后端数据库

<script>
    export default {
        name: "Login",
      data(){
          return {
            username:'',
            password:'',
          }
      },
      methods:{
          loginHandler(){
            this.$axios.post( `${this.$settings.host}/users/login/`,{
              username:this.username,
              password:this.password,
            }).then((res)=>{
              console.log(res);
            }).catch((error)=>{
              console.log(error);
            })
          },
      }
    }
</script>

line 16-25

<div class="input-prepend restyle js-normal">
        <input v-model="username" placeholder="手机号或邮箱" type="text" name="session[email_or_mobile_number]" id="session_email_or_mobile_number">
        <i class="iconfont ic-user"></i>
      </div>
    <!-- 海外登录登录名输入框 -->

    <div class="input-prepend">
      <input v-model="password" placeholder="密码" type="password" name="password" id="session_password">
      <i class="iconfont ic-password"></i>
    </div>

settings.js

export default {
    # 将原来 127.0.0.1:8000 什么的改成新的url 地址
  'host': 'http://api.renran.com:8000',
}

登录测试
密码错误时:

Django 实现jwt认证的示例

密码正确时:

Django 实现jwt认证的示例

remember me 认证

对于浏览器来说,如果不保存密码则返回 sessionstorage;保存密码的话返回 localstorage,如图

Django 实现jwt认证的示例

login.vue line28

<div class="remember-btn">
      <input type="checkbox" v-model="remember_me"name="remember_me" id="session_remember_me"><span>记住我</span>
    </div>

line59

data(){
          return {
            username:'',
            password:'',
            remember_me:false,
          }
      },
      methods:{
          loginHandler(){
            this.$axios.post( `${this.$settings.host}/users/login/`,{
              username:this.username,
              password:this.password,
            }).then((res)=>{
              console.log(res);
              if (this.remember_me){
                localStorage.token = rens.data.token;
                //sessionStorage.clear() 清除所有的网站的 sessionstorage
                sessionStorage.removeItem(`token`);

              }else {
                sessionStorage.token = res.data.token;
                localStorage.removeItem(`token`);
              }

            }).catch((error)=>{
              console.log(error);
            })
          },
      }

登录后确定框

element-ui网站下载:element.eleme.cn/#/zh-CN/com…

// 登录成功后跳转到首页
        this.$confirm('登录成功, 是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
         this.$router.push('/');
        }).catch(() => {
          this.$message({
            type: '?',
            message: '不登录?'
          });
        });

            }).catch((error)=>{
              this.$message({
                type:'error',
                message:'用户名或密码错误'
                })
            })
          },
      }

以上就是Django 实现jwt 认证的示例的详细内容,更多关于Django 实现jwt 认证的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
netbeans7安装python插件的方法图解
Dec 24 Python
python实现无证书加密解密实例
Oct 27 Python
在Python中处理字符串之isdecimal()方法的使用
May 20 Python
Python面向对象编程基础解析(一)
Oct 26 Python
Python实现感知机(PLA)算法
Dec 20 Python
对python产生随机的二维数组实例详解
Dec 13 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
python3的数据类型及数据类型转换实例详解
Aug 20 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
Python实现序列化及csv文件读取
Jan 19 Python
Python sublime安装及配置过程详解
Jun 29 Python
python 实现aes256加密
Nov 27 Python
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 #Python
python绘图subplots函数使用模板的示例代码
教你怎么用Python处理excel实现自动化办公
解决python绘图使用subplots出现标题重叠的问题
python数据库批量插入数据的实现(executemany的使用)
Apr 30 #Python
Python如何把不同类型数据的json序列化
Apr 30 #Python
python实现三次密码验证的示例
You might like
在PHP中使用XML
2006/10/09 PHP
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
javascript基本包装类型介绍
2015/04/10 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
AngularJS封装指令方法详解
2016/12/12 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
2017/08/17 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
Python shelve模块实现解析
2019/08/28 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
python3 kubernetes api的使用示例
2021/01/12 Python
英国著名的化妆品折扣网站:Allbeauty.com
2016/07/21 全球购物
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
幼师专业求职推荐信
2013/11/08 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
运动会表扬稿大全
2014/01/16 职场文书
小学校本培训方案
2014/06/06 职场文书
军人离婚协议书样本
2014/10/21 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
承诺函格式模板
2015/01/21 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
高中数学课堂教学反思
2016/02/18 职场文书