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中的列表与位运算符
Oct 12 Python
Python argv用法详解
Jan 08 Python
Python实现全角半角字符互转的方法
Nov 28 Python
使用Python脚本和ADB命令实现卸载App
Feb 10 Python
python中文件变化监控示例(watchdog)
Oct 16 Python
python奇偶行分开存储实现代码
Mar 19 Python
在pycharm中python切换解释器失败的解决方法
Oct 29 Python
Django admin禁用编辑链接和添加删除操作详解
Nov 15 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 Python
Python为何不支持switch语句原理详解
Oct 21 Python
python 第三方库paramiko的常用方式
Feb 20 Python
python源文件的字符编码知识点详解
Mar 04 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
如何在php中正确的使用json
2013/08/06 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
JavaScript中常见陷阱小结
2010/04/27 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
python实现web方式logview的方法
2015/08/10 Python
详解python中的json和字典dict
2018/06/22 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
巴西男士个人护理产品商店:SHOP4MEN
2017/08/07 全球购物
会计学应届毕业生推荐信
2013/11/04 职场文书
高中体育教学反思
2014/01/29 职场文书
企业消防安全制度
2014/02/02 职场文书
青年文明号服务承诺
2014/03/31 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书