码迷,mamicode.com
首页 > 其他好文 > 详细

对项目的总结

时间:2020-06-03 16:03:05      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:静态化   问题   ica   间隔   date   获取用户信息   http协议   调度框架   head   

用户部分模块:

基本功能:用户注册,登录,密码的重置,第三方登录
用户注册

1,图片验证码

流程分析:

1,前端生成uuid随机字符串
        
2,后端生成图片验证码发送给前端,将图形验证码的存入到redis中

2,短信验证码

1,检查图片的验证码
2,检验是否是在60s内是否已经发送过
3,生成短信验证码
4,保存发送的短信验证码
5,发送短信(第三方平台发送:云通讯)

3,判断用户名是否存在

1,用户输入用户名之后ajax局部刷新页面
2,后台查询数据库用户是否存在
3,返回数据给前端
4,判断手机号码是否已经存在

技术点:前后端的域名不相同,涉及到csrf跨站请求伪造的问题;
Csrf相关概念:

1,域=协议+域名+端口,在两个域中,以上三者中任意一个条件不同,均涉及到跨域的问题;

2,浏览器的策略

1,对于简单的请求,浏览器发送请求,但是得到请求之后会检验响应头中是否有当前的域中,如果没有则会在浏览器中报错;
2,对于复杂的请求,浏览器会先发送一个option请求,询问服务器是否支持跨域,如果响应头中的域名允许,才会发送相对应的请求来获取数据,并交给js进行处理。

3,Python的django中的跨域处理的相关模块django-cors-headers

技术点:前端用户将图片验证码发送给后台之后,第三方平台发送短信的过程中会有网络的阻塞程序继续往下执行,进而影响用户体验效果;

解决方案:采用celery进行短信验证码的异步发送;**
Celery概念:分布式异步任务队列调度框架:

1,支持定时任务和异步任务两种方式
2,组成:大概分为四个部分client客户端发送数据,broker中间件(redis数据库,消息队列),worker(任务的执行者),backend(执行worker任务的执行结果)
3,可以开启多进程也可以是多线程
4,应用场景:在某一个任务的执行过程中,会涉及到耗时的操作,但是这个耗时操作并不会影响后续的程序的执行,此时就可以用celery来异步执行这些任务;

用户登录

cookies的使用目的

1.http协议本生是一种无状态的协议,假如用户每次发送请求过来将用户名和密码在后端进行验证后才可以登录到某些界面才可以进行操作,当客户端再次请求服务器时,又要重新进行认证;

2.解决方法:在客户端设置cookie并在本地设置session存储用户的敏感信息,从而来记录当前用户登录的状态,如果用户量再次请求服务器,将cookie带给服务器,服务器查询session获取用户信息,进行下一步操作。

3.客户端比较多的情况下,seession中默认会存在内存,随着用户量的增加服务器的压力就会变大;

传统的cookies显示出来的问题

在现在的市场各种不同的浏览器,对同一个网站进行,用户的每种设备都需要维护相关的session在服务器端,会造成服务器资源的浪费,相关网站采取单点登录来记录用户的状态状态来解决以上传统cookies带来的问题

token认证的机制

1.用户携带用户名和密码来后端进行验证
2.服务器端验证通过后对为当前用户生成token
3.将token返回给前端,记录用户的信息
4.用户再次请求服务器的时候,服务端解析token相关的信息,验证用户
确定用户状态,进行 相关操作

备注:

1.jwt的组成第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature).

2.secretkey是存储在服务器端的,如果secret key

qq登录

qq登录流程oauth2的认证流程分析

1.用户向美多网站发送qq登录的请求
2.美多网站向用户返回qq登录的页面
3.用户在qq登录的界面向qq的服务器发送qq用户名和密码发起登录的请求
4.qq服务器认证成功之后将用户引导到回调的网址中,并返回给用户qq服务器的token值
5.用户重定向到美多页面并携带了qq服务器发送的token
6.后端接收到token后向qq服务器请求access token
7.qq服务器返回access token
8.美多服务器通过access token来向qq服务器来获取用户的openid
9.通过id来查询用户是否已经在美多商城注册
10.用户已经注册直接返回用户的access token值
11.用户没有账号,生成注册的access token,(载荷openid)重新注册信息发送给后端
12.后端接收到数据之后创建对象并将qq用户的openid和账号进行绑定

忘记密码的功能的实现

1.用户发送过来请求,携带用户名和图片验证码
2.后端验证图片验证码,通过账号查询用户,将用户的电话号码部分返回给前3.端,并生成发送短信的access token(载荷mobile)值
4.前端填写手机号码验证码并携带access token到后端
5.后端接收到手机号码校验(正确性,发送时间间隔),通过手机号码站到用户对象,生成密码修改的access token(载荷uer obj)值
6.前端用户填写新的密码之后,携带access token到后端重置密码 

技能点

djangorestframework中的实现JWT token的模块itsdangerous的使用

用户中心

个人信息

个人信息是用户的私有信息,必须是登录用户才可以访问,并且值可以访问自己的相关信息

1.用户个人信息的展示流程
2.前端在页面被加载完成之后向后端发送请求用户数据
3.后端通过rest_framework.permissions.IsAuthenticated判断用户是否登录,并获取用户的user模型
4.将用户的详细信息返回给前端,在前端进行展示
5.用户个人中心的信息中有一项是用户的邮箱是否激活

邮箱验证的流程

1.用户填入邮箱点击保存后端接收到邮箱后异步发出邮件,链接中包含access token(载荷uer id& email)
2.邮件中包含token值,在用户点击邮件中的链接之后向前端发送激活的请求
3.后端验证access token合法性,DRF中的序列化器update的方法,在序列化器中create方法中将用户的email字段更改为激活状态
4.将用户的对象返回给前端

技术点:
1.django中发送邮件的配置信息
2.利用celery来实现异步的邮件发送

用户收货地址的设置

DRF中序列化器的嵌套
1,DRF中的ReadOnlyModelViewSet中将请求方式与资源状态进行了绑定,在这里我们只需要从数据库中去数据所以直接就可以继承ModelSerializer这个类
2,view视图中的action==‘list’(即前端url不带参数)说明前端要获取所有的省份
3,view视图中的action!=‘list’(即前端url带参数)说明前端要获取所有的省份底下的行政区划
4,在这个返回的过程中如果前端页面返回的url中返回的带有参数则返回省份

订单模块:

基本功能:提交订单,我的订单,订单评价

提交订单

FDFS

https://www.cnblogs.com/tracydzf/p/12812844.html

docker的理解

1.docker是一种虚拟化的技术,我们可以将docker视为一种容器,在容器的内部可以运行服务,

2.Docker本身是一种C/S架构的程序,Docker客户端需要向服务器发送请求,服务器完成所有的工作之后返回给客户端结果;

优点

  • 加速本地开发和构建的流程,在本地可以自己轻松的构建,运行,分享所配置好的docker环境
  • 能够在不同的操作系统的环境中获取相同的docker容器中的环境,减少了在部署环节中的环境问题待来的麻烦
  • docker可以创建虚拟化的沙箱环境可以供测试使用
  • docker可以让开发者在最开始的开发过程中在测试的环境中运行,而并非一开始就在生产环境中开发,部署和测试

首页静态化的技术

电商类型的网站首页的访问评率较大,每次获取首页过程中去对数据库进行查询显然不太合理,除了使用传统意义上的缓存实现之外,我们可以使用首页静态化的技术,即将动态生成的html页面生成保存成静态文件,在用户访问的过程中直接将静态文件发送给用户

优点:可以缓解数据库压力,并且可以提高用户访问的网站的速度,提高用户体验

 

3.带来的问题是:用户在页面中动态生成的部分数据如何处理

对项目的总结

标签:静态化   问题   ica   间隔   date   获取用户信息   http协议   调度框架   head   

原文地址:https://www.cnblogs.com/tracydzf/p/13036837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!