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开发微信支付的注意事项
Aug 19 Python
Python制作Windows系统服务
Mar 25 Python
Python 基础教程之str和repr的详解
Aug 20 Python
Python反射的用法实例分析
Feb 11 Python
python3安装pip3(install pip3 for python 3.x)
Apr 03 Python
Django项目中添加ldap登陆认证功能的实现
Apr 04 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
浅析Python3 pip换源问题
Jan 06 Python
关于python pycharm中输出的内容不全的解决办法
Jan 10 Python
如何基于Python实现数字类型转换
Feb 07 Python
Selenium常见异常解析及解决方案示范
Apr 10 Python
python用tkinter实现一个简易能进行随机点名的界面
Sep 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学习之PHP表达式
2006/10/09 PHP
MySQL数据源表结构图示
2008/06/05 PHP
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
php二维数组排序详解
2013/11/06 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
jquery ajax 同步异步的执行 return值不能取得的解决方案
2012/01/08 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
2016/06/25 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
Python3中的2to3转换工具使用示例
2015/06/12 Python
python中快速进行多个字符替换的方法小结
2016/12/15 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
Python高级用法总结
2018/05/26 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
Python手动或自动协程操作方法解析
2020/06/22 Python
Matplotlib.pyplot 三维绘图的实现示例
2020/07/28 Python
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
经典c++面试题二
2015/08/14 面试题
初一生物教学反思
2014/01/18 职场文书
高三生物教学反思
2014/01/25 职场文书
保密工作实施方案
2014/02/24 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android