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模块学习 datetime介绍
Aug 27 Python
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
Python 安装setuptools和pip工具操作方法(必看)
May 22 Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
Python之dict(或对象)与json之间的互相转化实例
Jun 05 Python
通过python顺序修改文件名字的方法
Jul 11 Python
Python rstrip()方法实例详解
Nov 11 Python
Python功能点实现:函数级/代码块级计时器
Jan 02 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
Mar 05 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
python3反转字符串的3种方法(小结)
Nov 07 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
4.与数据库的连接
2006/10/09 PHP
领悟php接口中interface存在的意义
2013/06/27 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
Python创建或生成列表的操作方法
2019/06/19 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
python字典的常用方法总结
2019/07/31 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
CSS3 实现的缩略图悬停效果
2020/12/09 HTML / CSS
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
口腔医学技术应届生求职信
2013/11/09 职场文书
市场部管理制度
2014/02/02 职场文书
跑操口号
2014/06/12 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
工作报告范文
2019/06/20 职场文书
总结高并发下Nginx性能如何优化
2021/11/01 Servers