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的PEAK来适配协议的教程
Apr 14 Python
Python脚本文件打包成可执行文件的方法
Jun 02 Python
python实现日常记账本小程序
Mar 10 Python
Python实现Dijkstra算法
Oct 17 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
Python线上环境使用日志的及配置文件
Jul 28 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
Sep 16 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
Python DES加密实现原理及实例解析
Jul 17 Python
python语言time库和datetime库基本使用详解
Dec 25 Python
scrapy-splash简单使用详解
Feb 21 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实现链结人气统计
2006/10/09 PHP
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
javascript实现仿百度图片的瀑布流加载效果
2016/04/20 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
WebPack配置vue多页面的技巧
2018/05/15 Javascript
vue-cli3+typescript初体验小结
2019/02/28 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
2019/09/11 Javascript
Python实现的数据结构与算法之链表详解
2015/04/22 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
python实现图书借阅系统
2019/02/20 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
Python识别处理照片中的条形码
2020/11/16 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
linux面试题参考答案(11)
2016/11/26 面试题
学生自我鉴定
2013/12/18 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
体育部部长竞选稿
2015/11/21 职场文书
2019年思想汇报
2019/06/20 职场文书
Python如何配置环境变量详解
2021/05/18 Python
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android
为Centos安装指定版本的Docker
2022/04/01 Servers