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中的Matplotlib模块入门教程
Apr 15 Python
Python中的zipfile模块使用详解
Jun 25 Python
浅谈Python peewee 使用经验
Oct 20 Python
Python机器学习算法之k均值聚类(k-means)
Feb 23 Python
python针对excel的操作技巧
Mar 13 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
Python中logging.NullHandler 的使用教程
Nov 29 Python
Python File(文件) 方法整理
Feb 18 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
May 10 Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 Python
Python函数式编程指南:对生成器全面讲解
Nov 19 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 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实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP getName()函数讲解
2019/02/03 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
js停止输出代码
2008/07/20 Javascript
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
在CMD命令行中运行python脚本的方法
2018/05/12 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
python绘制汉诺塔
2021/03/01 Python
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
幼儿园教师培训方案
2014/02/04 职场文书
求职毕业生自荐书
2014/02/08 职场文书
物业总经理岗位职责
2014/02/28 职场文书
群众路线党课主持词
2014/04/01 职场文书
法制宣传月活动方案
2014/05/11 职场文书
公务员政审材料范文
2014/12/23 职场文书
沈阳故宫导游词
2015/01/31 职场文书
党员自我评价范文2015
2015/03/03 职场文书
小学体育教学随笔
2015/08/14 职场文书
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL