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 字符串split的用法分享
Mar 23 Python
解析Python中的二进制位运算符
May 13 Python
python处理html转义字符的方法详解
Jul 01 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
Python编写Windows Service服务程序
Jan 04 Python
python+selenium实现自动抢票功能实例代码
Nov 23 Python
Python去除字符串前后空格的几种方法
Mar 04 Python
python gdal安装与简单使用
Aug 01 Python
Django获取应用下的所有models的例子
Aug 30 Python
如何在sublime编辑器中安装python
May 20 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
如何用python实现一个HTTP连接池
Jan 14 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 session劫持和防范的方法
2013/11/12 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
javascript数组使用调用方法汇总
2007/12/08 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
VUE Elemen-ui之穿梭框使用方法详解
2021/01/19 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
python3访问sina首页中文的处理方法
2014/02/24 Python
Djang中静态文件配置方法
2015/07/30 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
Django框架请求生命周期实现原理
2020/11/13 Python
python中的对数log函数表示及用法
2020/12/09 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
个人自荐信
2013/12/05 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
个人年终总结结尾
2015/03/06 职场文书
大学生团日活动总结
2015/05/06 职场文书
计划生育责任书
2015/05/09 职场文书
酒会开场白大全
2015/06/01 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
《废话连篇——致新手》——chinapizza
2022/04/05 无线电