Vue + drf 打造前后端分离的生鲜电商平台 —— 周报 4

2024-02-25 12:40

本文主要是介绍Vue + drf 打造前后端分离的生鲜电商平台 —— 周报 4,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

		                    ——————  学习周报 2019.2.10


在这里插入图片描述

掌握的技术:
  • Vue + Django REST framework 前后端分离技术
  • restful api 开发流程
  • Django REST framework 的功能实现和核心源码分析
  • Sentry 完成线上系统的错误日志的监控和警告
  • 第三方登录和支付宝支付的集成
  • 本地调试远程服务器代码技巧


完成情况:

  • “用户登录与手机注册”
    • drf 的tock登录和原理
    • viewsets 配置认证类
    • json web token 的原理
    • json web token 方式完成用户认证
    • vue 和 jwt 接口调试
    • 云片网发送短信验证码
  • django知识点学习


笔记:

1、drf 的tock登录和原理

  • 详见 Django REST framework 官方文档。
  • 采用tock机制。
  • 配置settings.py:
验证用户登录信息:
REST_FRAMEWORK = {'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.BasicAuthentication','rest_framework.authentication.SessionAuthentication',),
}
  • 配置 INSTALLED_APPS:
INSTALLED_APPS = ['rest_framework.authtoken'
]
  • 配置url
  • 注意理解django下的源码。

2、viewsets 配置认证类

  • 可以分接口配置认证。解决某些接口需要认证才可以访问,某些接口不需要认证就可以访问
  • 怎么做?
    • 在需要配置认证的接口中进行认证判断
      from rest_framework.authentication import TokenAuthentication
      某一个接口:authentication_classes = (TokenAuthentication, )
      

3、json web token 的原理

  • 前后端分离的系统中,最常用的用户认证方式是:JWT模式。
  • 原理: https://www.jianshu.com/p/180a870a308a
  • JWT的主要作用:
    • (一)可附带用户信息,后端直接通过JWT获取相关信息。
    • (二)使用本地保存,通过HTTP Header中的Authorization位提交验证。
  • JWT用户认证:

在这里插入图片描述

  • 1、首先,前端通过Web表单将自己的用户名和密码发送到后端的接口。这一过程一般是一个HTTP POST请求。建议的方式是通过SSL加密的传输(https协议),从而避免敏感信息被嗅探。
  • 2、后端核对用户名和密码成功后,将用户的id等其他信息作为JWT Payload(负载),将其与头部分别进行Base64编码拼接后签名,形成一个JWT。形成的JWT就是一个形同lll.zzz.xxx的字符串。
  • 3、后端将JWT字符串作为登录成功的返回结果返回给前端。前端可以将返回的结果保存在localStorage或sessionStorage上,退出登录时前端删除保存的JWT即可。
  • 4、前端在每次请求时将JWT放入HTTP Header中的Authorization位。(解决XSS和XSRF问题)
  • 5、后端检查是否存在,如存在验证JWT的有效性。例如,检查签名是否正确;检查Token是否过期;检查Token的接收方是否是自己(可选)。
  • 6、验证通过后后端使用JWT中包含的用户信息进行其他逻辑操作,返回相应结果。
						本段文字来源于简书:https://www.jianshu.com/p/180a870a308a

4、json web token 方式完成用户认证

  • GitHub下载开源项目包: django rest framework jwt
  • 官方文档: http://getblimp.github.io/django-rest-framework-jwt/
  • 安装:
    在这里插入图片描述
  • 配置 jwt 认证接口: 见文档
  • 测试

5、vue 和 jwt 接口调试

  • 使用jwt接口配合vue完成认证登录:
    在这里插入图片描述
    在这里插入图片描述

  • 自定义用户认证函数:

    • settings.py中:

      AUTHENTICATION_BACKENDS = ('users.views.CustomBackend',
      )
      
  • 在users / views.py下定义用户认证类:

from django.contrib.auth.backends import ModelBackend
from django.contrib.auth import get_user_model
from django.db.models import QUser = get_user_model()class CustomBackend(ModelBackend):"""自定义用户验证"""def authenticate(self, username=None, password=None, **kwargs):try:user = User.objects.get(Q(username=username) | Q(mobile=username))if user.check_password(password):return userexcept Exception as e:return None
  • 过期时间设置:—— 在settings.py下
import datetime
JWT_AUTH = {'JWT_EXPIRATION_DELTA': datetime.timedelta(days=7),'JWT_AUTH_HEADER_PREFIX': 'JWT',
}

6、云片网发送短信验证码

  • 利用云片网发送短信验证码
  • 云片网文档:单条发送
  • APIKEY很重要,注意不要泄露。
    在这里插入图片描述
    在这里插入图片描述
  • 在apps下新建文件夹 utils,在 utils下新建 yunpian.py :
# -*- coding: utf-8 -*-
import json
import requestsclass YunPian(object):def __init__(self, api_key):self.api_key = api_keyself.single_send_url = "https://sms.yunpian.com/v2/sms/single_send.json"  # 单条发送def send_sms(self, code, mobile):parmas = {"apikey": self.api_key,"mobile": mobile,"text": "【Taotao生鲜】您的验证码是{code}。如非本人操作,请忽略本短信".format(code=code)}response = requests.post(self.single_send_url, data=parmas)re_dict = json.loads(response.text)return re_dictif __name__ == "__main__":yun_pian = YunPian("xxxxxxxxxxxxxxxxxxxx")   #  APIKEYyun_pian.send_sms("2019", "xxxxxxxxxx")   # 电话号码
  • 当发送失败时,在系统设置里面加入IP白名单。(将自己的服务器的IP或者本地IP加入白名单)


下周计划:

  • 手机注册:
  • drf 实现发送短信验证码接口
  • uesr serializer 和 validator 验证
  • django信号量实现用户密码修改
  • vue和注册功能联调
  • 商品详情页功能
  • viewsets实现商品详情页接口
  • 热卖商品接口实现
  • 用户收藏接口实现
  • drf 的权限验证
  • 用户收藏功能和vue联调

这篇关于Vue + drf 打造前后端分离的生鲜电商平台 —— 周报 4的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745510

相关文章

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

MySQL主从复制与读写分离的用法解读

《MySQL主从复制与读写分离的用法解读》:本文主要介绍MySQL主从复制与读写分离的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、主从复制mysql主从复制原理实验案例二、读写分离实验案例安装并配置mycat 软件设置mycat读写分离验证mycat读

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

HTML5 中的<button>标签用法和特征

《HTML5中的<button>标签用法和特征》在HTML5中,button标签用于定义一个可点击的按钮,它是创建交互式网页的重要元素之一,本文将深入解析HTML5中的button标签,详细介绍其属... 目录引言<button> 标签的基本用法<button> 标签的属性typevaluedisabled

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.