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使用urllib2模块获取gravatar头像实例
Dec 18 Python
Python简单操作sqlite3的方法示例
Mar 22 Python
python中如何使用朴素贝叶斯算法
Apr 06 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
Python进度条的制作代码实例
Aug 31 Python
通过python连接Linux命令行代码实例
Feb 18 Python
Python 程序员必须掌握的日志记录
Aug 17 Python
Python Map 函数的使用
Aug 28 Python
属性与 @property 方法让你的python更高效
Sep 21 Python
python 实现弹球游戏的示例代码
Nov 17 Python
Python实现滑雪小游戏
Sep 25 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
1.PHP简介
2006/10/09 PHP
php 清除网页病毒的方法
2008/12/05 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
JQuery 文本框使用小结
2010/05/22 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
Bootstrap中表单控件状态(验证状态)
2016/08/04 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
python获取网页状态码示例
2014/03/30 Python
Python获取央视节目单的实现代码
2015/07/25 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
Python JSON编解码方式原理详解
2020/01/20 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
安全资料员岗位职责
2013/12/14 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
服务宗旨标语
2014/07/01 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
MySQL修炼之联结与集合浅析
2021/10/05 MySQL
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers
Java界面编程实现界面跳转
2022/06/16 Java/Android