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 相关文章推荐
python网络编程学习笔记(10):webpy框架
Jun 09 Python
一些Python中的二维数组的操作方法
May 02 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
Python定时任务sched模块用法示例
Jul 16 Python
windows下 兼容Python2和Python3的解决方法
Dec 05 Python
numpy中的ndarray方法和属性详解
May 27 Python
获取django框架orm query执行的sql语句实现方法分析
Jun 20 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
Django多数据库配置及逆向生成model教程
Mar 28 Python
Python批量安装卸载1000个apk的方法
Apr 10 Python
python中setuptools的作用是什么
Jun 19 Python
Python join()函数原理及使用方法
Nov 14 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微信支付实例解析
2016/07/22 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
js性能优化技巧
2015/11/29 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
python转换摩斯密码示例
2014/02/16 Python
Python跳出循环语句continue与break的区别
2014/08/25 Python
Python中转换角度为弧度的radians()方法
2015/05/18 Python
深入解析Python编程中super关键字的用法
2016/06/24 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
Python玩转Excel的读写改实例
2019/02/22 Python
python多线程http压力测试脚本
2019/06/25 Python
Python定时器线程池原理详解
2020/02/26 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
高中数学教师求职信
2013/10/30 职场文书
贷款担保书范文
2014/05/13 职场文书
西游降魔篇观后感
2015/06/15 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
导游词之清晏园
2019/11/22 职场文书
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS
php访问对象中的成员的实例方法
2021/11/17 PHP
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js