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

相关文章

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

ShardingSphere之读写分离方式

《ShardingSphere之读写分离方式》:本文主要介绍ShardingSphere之读写分离方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录ShardingSphere-读写分离读写分离mysql主从集群创建 user 表主节点执行见表语句项目代码读写分

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签