介绍
django的自定义用户和自定义用户验证是常用操作,但是新手很容易搞迷糊
本文整理一下
自定义用户
# 先定义用户model
from django.contrib.auth.models import AbstractUser
class UserProfile(AbstractUser):
nick_name = models.CharField(max_length=50, verbose_name=u"昵称", default="")
birday = models.DateField(verbose_name=u"生日", null=True, blank=True)
gender = models.CharField(max_l...
django用QQ邮箱发送SMTP邮件踩坑笔记
介绍
django发送邮件是比较常见的需求,国内比较普遍使用的QQ的SMTP发送邮件服务
但是网上教程还是挺多坑,尝试半天终于成功了,这里记录一下
QQ邮箱配置
QQ邮箱设置里点击管理服务
生成授权码
点击查看配置SMTP和IMAP方法,其实下面讲不对
具体配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 25 # 关键这个端口,必须写25,按官网的端口都没用
EMAIL_USE_TLS = False
EMAIL_HOST_USER = '' # 你的邮箱地址
EMAIL_HOST_PASSWORD = ...
开发后端找回密码功能流程梳理
介绍
之前文章介绍了注册和登录,本文梳理一下找回密码的流程
找回密码流程
...
JWT是否可以避免XSS攻击和CSRF攻击
JWT介绍
JWT是一种适合分布式的用户身份验证方式,特点是不同微服务可以独立验证用户身份,获取用户身份信息。
前端使用JS将JWT放在header中手动发送给服务端,服务端验证header中的JWT字段,而非cookie信息
XSS跨站脚本攻击
用户访问网页的时候,执行了源网站没有的JS脚本
比如
将js脚本添加的url地址后面
源服务器被黑客攻击,网页夹带了黑客的JS脚本
结论:
JWT无法避免XSS攻击,因为js脚本可以从store中获取用户的jwt令牌
CSRF攻击
用户在登录源网站的情况下,在不知情的情况下调用了目标网站的接口(带着cookie)
典型场景,比如伪造的网站B有一个图片src地址是源网站A的。
用户登录A网站的前提下,访问B网站,会在不知情的情况下自动带着A网站的cookie请求了B网站的src地址的接口
传统防御方法是,每个...
django开发JWT登录功能流程梳理
django开发JWT登录功能流程梳理
jwt介绍
JWT登录功能,就是返回给用户JWT验证信息做token。后端验证用户信息的时候对信息解密,验证用户是否正确。
jwt分为三部分,header定义加密算法,payload是用户信息,signature是前两部分的base64字符串后再加密。三部分再base64中间用点号连接组成JWT
jwt可以是对称加密也可以是非对称加密(私钥加密,公钥解密),秘钥要保存在服务器端不能泄露
登录流程
验证码表
用户表
JWTtoken生成
安装依赖库:
https://github.com/jpadilla/django-rest-framework-jwt
注意上面项目其实已经不再维护,不过现在还可以用。如果更高版本的django可以考虑使用下面的库
https://github...
开发后端邮箱注册功能流程梳理
介绍
一开始学后端开发读写数据库容易,但是一到登录注册开发,复杂的流程搞得人望而生畏。
本文对注册流程开发做一个流程梳理的笔记
vue+django的前后端分离项目
所需数据表
验证码数据表
邮箱验证码表
用户表
注册功能流程图
...
docker容器不用重新构建修改端口映射方法
介绍
docker使用有个限制,就是容器创建以后不能修改端口映射。要修改必须删除容器重新构建。
但是如果我的容器里想添加新的服务器,比如运行多个python程序,没有端口了怎么办呢。
如果习惯用docker做开发环境的话,应该肯定会遇到这个痛点。
本文介绍的方法使用图形界面来修改docker已有容器的端口映射,非常方便。
而且应该是比较原创的,网上搜的教程是没有的
本文定价20元
文章内容
输入密码查看加密内容:
...
docker容器创建与镜像构建笔记
介绍
本文整理一下docker容器创建与镜像构建的常用命令,基本概念,可以做为速查笔记使用
docker run创建容器
# docker命令
docker run -it \
-p 6011-6050:6011-6050 \
-p 6010:22 \
--name py312all \
--restart always \
-v /home/uadmind/dockerserver/...
python的pip包下载加速与缓存
介绍
本文介绍pip怎么配置默认镜像源加速下载,以及pip的环境机制
默认镜像源配置
windows环境:
C:\Users\用户\AppData\Roaming\pip
上面目录添加pip.ini文件
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
然后pip install的时候查看下载的路径是不是清华源就行了。应该是改了立刻生效的
linux环境
在用户目录下新建.pip文件夹,然后创建pip.conf文件
写入下面内容:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
linux环境下编辑文件比较麻烦,给了一个python脚本来创建文件和写入
import os
...
django项目结合Vue的生产发布梳理
介绍
django的生产发布与开发环境还是很不一样,本文梳理一下生产发布具体有哪些配置。
statci静态资源收集
django中有很多app,自己建的或者第三方的。这些app都有自己的static目录。
开发的时候,当文件路径是/static的文件,django会去各个app的static目录下寻找有没有对应文件
但是生产的时候,需要执行collect命令,将各个app下的static目录下的文件复制到指定的STATIC_ROOT目录下,然后添加路由就是static路径就到STATIC_ROOT目录下寻找了
python manage.py collectstatic
下面的STATIC_ROOT路径有两种配置,
一种是移动到项目之外的文件夹,这等于说是让nginx来路由静态文件
一种是我这里写的移动到项目的www/static目录下
sett...