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变量和数据类型详解
Feb 15 Python
在python3.5中使用OpenCV的实例讲解
Apr 02 Python
sublime python3 输入换行不结束的方法
Apr 19 Python
关于Tensorflow中的tf.train.batch函数的使用
Apr 24 Python
Python高斯消除矩阵
Jan 02 Python
python 为什么说eval要慎用
Mar 26 Python
Django框架设置cookies与获取cookies操作详解
May 27 Python
python 抓包保存为pcap文件并解析的实例
Jul 23 Python
Python 线程池用法简单示例
Oct 02 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
python中if及if-else如何使用
Jun 02 Python
Python3爬虫中pyspider的安装步骤
Jul 29 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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
php 验证码制作(网树注释思想)
2009/07/20 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP addcslashes()函数讲解
2019/02/03 PHP
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
再谈javascript原型继承
2014/11/10 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
2020/06/05 Javascript
python中随机函数random用法实例
2015/04/30 Python
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
python识别验证码的思路及解决方案
2020/09/13 Python
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
数组越界问题
2015/10/21 面试题
求职简历自荐信
2013/10/20 职场文书
简历自我评价模版
2014/01/31 职场文书
项目经理任命书范本
2014/06/05 职场文书
2015元旦标语横幅
2014/12/09 职场文书
葬礼主持词
2015/07/02 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
css样式important规则的正确使用方式
2022/06/10 HTML / CSS