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序列之list和tuple常用方法以及注意事项
Jan 09 Python
python继承和抽象类的实现方法
Jan 14 Python
django2 快速安装指南分享
Jan 05 Python
使用Python实现从各个子文件夹中复制指定文件的方法
Oct 25 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
python 实现分页显示从es中获取的数据方法
Dec 26 Python
Python3爬虫全国地址信息
Jan 05 Python
python列表推导式入门学习解析
Dec 02 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
Feb 03 Python
python 通过邮件控制实现远程控制电脑操作
Mar 16 Python
python实现程序重启和系统重启方式
Apr 16 Python
基于Python下载网络图片方法汇总代码实例
Jun 24 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/12/23 PHP
支持php4、php5的mysql数据库操作类
2008/01/10 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
PHP可变函数的使用详解
2013/06/14 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
php提取微信账单的有效信息
2018/10/01 PHP
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
JavaScript中标识符提升问题
2015/06/11 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
微信小程序实现红包雨功能
2018/07/11 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
python多线程http下载实现示例
2013/12/30 Python
Python单元测试框架unittest简明使用实例
2015/04/13 Python
详解Python中列表和元祖的使用方法
2015/04/25 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
python实现逻辑回归的方法示例
2017/05/02 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
Python @property使用方法解析
2019/09/17 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
Python sublime安装及配置过程详解
2020/06/29 Python
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
电话客服工作职责
2014/07/27 职场文书
起诉意见书范文
2015/05/19 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android
总结高并发下Nginx性能如何优化
2021/11/01 Servers