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 相关文章推荐
在Linux下调试Python代码的各种方法
Apr 17 Python
浅析Python中的序列化存储的方法
Apr 28 Python
详解Python验证码识别
Jan 25 Python
Python pymongo模块常用操作分析
Sep 01 Python
了解不常见但是实用的Python技巧
May 23 Python
python @classmethod 的使用场合详解
Aug 23 Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
Sep 11 Python
Pytorch 之修改Tensor部分值方式
Dec 27 Python
python小程序基于Jupyter实现天气查询的方法
Mar 27 Python
Python命令行参数定义及需要注意的地方
Nov 30 Python
Python深度学习之Pytorch初步使用
May 20 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
提取HTML标签
2006/10/09 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
PHP Session机制简介及用法
2014/08/19 PHP
Smarty变量调节器失效的解决办法
2014/08/20 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
javascript eval和JSON之间的联系
2009/12/31 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
jq实现酷炫的鼠标经过图片翻滚效果
2014/03/12 Javascript
JS打开新窗口防止被浏览器阻止的方法
2015/01/03 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
详解如何更好的使用module vuex
2019/03/27 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
python清除字符串里非字母字符的方法
2015/07/02 Python
Python的Django框架安装全攻略
2015/07/15 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
Flask配置Cors跨域的实现
2019/07/12 Python
python中常用的数据结构介绍
2021/01/12 Python
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
九华山导游词
2015/02/03 职场文书
简历自我评价优缺点
2015/03/11 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
学习计划是什么
2019/04/30 职场文书