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发送arp欺骗攻击代码分析
Jan 16 Python
Python的ORM框架SQLObject入门实例
Apr 28 Python
python time模块用法实例详解
Sep 11 Python
Python smallseg分词用法实例分析
May 28 Python
浅谈终端直接执行py文件,不需要python命令
Jan 23 Python
Python实现输出程序执行进度百分比的方法
Sep 16 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
python实现四人制扑克牌游戏
Apr 22 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
Jun 18 Python
通过实例简单了解Python sys.argv[]使用方法
Aug 04 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中使用Oracle数据库(3)
2006/10/09 PHP
PHP操作数组相关函数
2011/02/03 PHP
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
基于php缓存的详解
2013/05/15 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
PHP函数超时处理方法
2016/02/14 PHP
深入理解Javascript闭包 新手版
2010/12/28 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
2014/05/23 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
深入理解vue中的$set
2017/06/01 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
python3实现随机数
2018/06/25 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
Python中包的用法及安装
2020/02/11 Python
python2和python3哪个使用率高
2020/06/23 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
护士自荐信
2013/10/25 职场文书
精彩的推荐信范文
2013/11/26 职场文书
端午节活动总结
2014/08/26 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
python ConfigParser库的使用及遇到的坑
2022/02/12 Python