生成激活用户token(使用加密) : django开发之天天生鲜项目知识总结【3】

四、【Django】基于Jwt的token认证(登录接口) django 使用jwt token的东西来进行认证 阅读详情

下面来进行分析,给用户发送,激活邮件,需要如何构成一条激活链接:

  • 发送激活邮件,包含激活链接:http://127.0.0.1:8000/user/active/1(1就是注册的用户id,可以通过id号进行用户身份的判断)
  • 激活链接中需要包含用户的身份信息:并且要将身份信息加密(防止某些人看穿规律,肆意伪造链接访问)

下面进行加密。需要导入一个模块:

在这里插入图片描述

下面进行安装:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple itsdangerous
  • 接着导入该类:
# 导入用来实现加密的类
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
  • 在终端演示一下如何使用:
Python 3.6.8 (default, Oct  7 2019, 12:59:55) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
>>> serializer = Serializer('secretkey', 3600)  # 创建实例对象,第一个参数随便指定的秘钥, 第二个参数是秘钥过期时间, 以秒为单位
>>> info = {'confirm': 1}     # 这里定义一个数据进行加密验证 
>>> res = serializer.dumps(info)    # 加密
>>> res
b'eyJhbGciOiJIUzUxMiIsImlhdCI6MTU3NDQyMTkwNiwiZXhwIjoxNTc0NDI1NTA2fQ.eyJjb25maXJtIjoxfQ.QFNkET46NVy-Orlaq7GVkJKKPMhoB6791--ueEZ1k8DjSMJuEMKS236a4SmZ3cqAEbkMjeE7mC96ih_eFh05BA'    # 加密结果。bytes类型的数据 
>>> serializer.loads(res)   # 这里是进行解密 
{'confirm': 1}
>>> 
>>> serializer = Serializer('secretkey', 5)
>>> info = {'confirm': 1}
>>> res = serializer.dumps(info)
>>> serializer.loads(res)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/huangdonglin/.virtualenvs/django_py3/lib/python3.6/site-packages/itsdangerous/jws.py", line 205, in loads
    date_signed=self.get_issue_date(header),
itsdangerous.exc.SignatureExpired: Signature expired    # 秘钥超时就会报这个错误
>>> 

下面可以看天天生鲜实例

# 在 settings文件里面,可以导入其中的一个常量,作为秘钥,所以需要导入 settings.py 文件
# 这个值是django内置的一个东西,可以拿来当做秘钥
# SECRET_KEY = 'hgr%i_sdyuse3dw)6&nnvv-9!djbt3%f#dknm$gn+&sv02njxp'


from django.conf import settings

# 加密用户的身份信息,生成激活的token
        serializer = Serializer(settings.SECRET_KEY, 3600)
        info = {'confirm': user.id}      # user 就是我获取的用户信息
        token = serializer.dumps(info)   # 显示的是 b'' 类型数据, 也就是 bytes类型数据,我们把它转换为字符串
        token = token.decode()   # 默认按照utf-8进行解码,变成字符串,这样才能变成一个参数,放到设置的激活链接后面而不会报错。

之后成功接收到链接之后,我们提取到加密之后的token,就需要对它解密,获得它的真实值(id)。

# 因为我们需要解码。可能出现秘钥过期报错,这里导入异常类,捕获异常
from itsdangerous import SignatureExpired  # 异常捕获


#这里给出我的处理 激活链接的类视图
class ActiveView(View):
    """用户激活"""
    def get(self, request, token):
        """进行用户激活"""
        # 进行解密,获取要激活用户的信息
        serializer = Serializer(settings.SECRET_KEY, 3600)
        try:
            info = serializer.loads(token)
            user_id = info.get('confirm')
            print(user_id,"++++++++++++++++++++++++++++++++" )
            # 根据id获取用户信息
            user = User.objects.get(id=user_id)
            user.is_active = 1
            user.save()

            # 返回应答,说明已经激活,这里跳转到登陆页面
            return redirect(reverse('user:login'))

        except SignatureExpired as e:
            # 激活链接以过期,这里只是简单的发送一句话,真正开发中,也应该返回一个这样的过期页面,然后用户点击按钮,可以重新向该用户发送邮件.
            return HttpResponse("激活链接以过期")
基于python+django的天天生鲜的电商项目源码.zip 立即下载

相关推荐

Ribo-seq数据解析:从翻译效率计算到动态可视化分析

本文系统介绍了Ribo-seq(核糖体印迹测序)数据分析全流程,从核心的P-site定位、翻译效率计算,到差异翻译分析和动态可视化。重点阐述了如何利用Ribo-seq高分辨率数据揭示基因表达在翻译层面的精细调控,并提供了从数据处理到生物学解读的实用工具与避坑指南。

weixin_28559803的博客 421

QQ第三方登录(itsdangerous生成激活token)

一.成为QQ互联的开发者 注册链接:http://wiki.connect.qq.com/%E6%88%90%E4%B8%BA%E5%BC%80%E5%8F%91%E8%80%85 等个3-5 天的工作日审核,审核通过就称为一个开发者了 二.创建应用 在应用管理中创建一个应用,得到APPID 填写相关资料,审核通过得到APPKEY,记录之前的回调地址 三.项目实现 浏览器--&gt;...

Spencer_q的博客 4399

FastAPI + LLM 实战:5分钟搞定本地模型API服务部署(含避坑指南)

本文详细介绍了如何使用FastAPI和LLM(大语言模型)快速部署本地API服务,涵盖环境准备、模型集成、性能优化及避坑指南。通过实战示例,帮助开发者在5分钟内完成从零到生产的部署过程,提升AI应用开发效率。

weixin_29062963的博客 102

【Django 天天生鲜项目02】注册、登录、用户中心 (itsdangerous模块加密、celery异步、 Django 的验证系统、redis作为缓存等)

关键:类视图的使用、用itsdangerous模块加密身份信息、使用celery异步发送邮件、使用 Django 的验证系统、redis作为缓存和session存储后端、login_required装饰器、LoginRequiredMixin类的使用、redis存储浏览记录的流程...

在下能猫 的博客 1497

利用Virtuoso IC 618进行LDO稳定性分析与补偿设计

本文详细介绍了如何利用Virtuoso IC 618进行LDO稳定性分析与补偿设计。通过搭建仿真环境、运行STB分析诊断环路问题,并深入探讨密勒补偿、调零电阻等关键技术,帮助工程师在Virtuoso平台中高效完成LDO的稳定性优化与验证,确保芯片在各种工艺角下的鲁棒性。

weixin_29170327的博客 162

FPGA之全数字锁相环(DPLL)

1. 数字锁相环的基本原理和组成 1.1 锁相环(PLL)的简介 锁相环最开始并不是用在数字电路中,而是模拟短路中。对于模拟电路中的锁相环,大家可以参考这篇文章稍微看一下,数字和模拟只是实现的方法不同,但是原理、步骤还是共同的。关于模拟PLL。可以参考一片文章: http://www.sohu.com/a/190569594_464086 首先在学习数字锁相环之前,我们应该先了解什么是锁相环?锁相...

DBLLLLLLLL的博客 5万+

django登录实现自动生成token

django登录实现自动生成token

qq_60976312的博客 2172

halcon 检测直线

图中后三个对象既是检测出的图像;

qq_59062726的博客 665

Django天天生鲜项目-用户注册

用户注册注册基本逻辑显示注册页面进行注册处理显示注册页面和页面处理使用同意个url地址类视图(建议用这个)生成激活用户的tokon注册用户激活流程 注册基本逻辑 显示注册页面 1,放入templates模板文件中, 2,修改user,vews.py, 3,修改项目应用user的urls.py 4,在html导入静态资源, 进行注册处理 1,修改提交地址,定义register_handle函数,添加url到user的urls.py中 2,接收数据 #接收数据 username = request.POST.

qq_48520823的博客 807

单细胞数据分析(三):单细胞聚类分析

本文介绍了单细胞聚类分析的基本概念及其在单细胞RNA测序(scRNA-seq)数据中的应用。单细胞聚类分析通过将具有相似基因表达模式的细胞分组到不同的簇中,帮助识别细胞类型、状态和功能。文章详细展示了使用R语言中的Seurat包进行单细胞数据聚类分析的步骤,包括数据加载、降维、聚类和结果可视化。通过FindNeighbors和FindClusters函数,文章展示了如何基于降维数据进行细胞聚类,并选择合适的分辨率值。

专注生信领域 1899

容器化部署指南——Docker/K8s环境下的OpenClaw实践(附Dockerfile)

通过本文的详细指导,你已经掌握了OpenClaw在Docker和Kubernetes环境中的容器化部署方法。从基础镜像构建到高级部署策略,从开发环境到生产环境,你现在已经具备了完整的容器化部署能力。 容器化技术为OpenClaw提供了灵活、可扩展、可移植的部署方案,能够满足不同规模和需求的应用场景。通过合理使用Docker和Kubernetes,你可以实现高效的部署管理和运维自动化。 在实际应用中,建议根据具体的业务需求选择合适的部署策略,并结合监控、日志、安全等最佳实践,确保系统的稳定性和可靠性。同时

博客 492

Django通过celery 异步发送邮件 : django开发之天天生鲜项目知识总结【5】

这里初次学习celery,只简单讲解一下如何使用celery 异步发送邮件,在以后的总结中还会,多次提到celery,因为后面很多任务都需要用到celery执行任务: 这里展示一张我看视频老师的图片示例,通过图片先大致了解一下(理解很重要~~~~): 根据图示,我们知道,celery,是要有三部分实现的: 首先是 任务的‘发出者’, 然后接受任务的‘任务队列’作为中间人(broker), 其...

pythonstrat的博客 935

告别手动读摘要!爬虫+大模型做学术助手:爬知网论文,10秒生成摘要+关键词(附完整代码)

知网的官方摘要往往冗长(200-300字),关键词可能不够精准,用大模型提炼“100字精简摘要”和“3-5个核心关键词”,更适合快速筛选文献。这套学术助手的核心价值,是把“找论文、读摘要、提关键词”这些重复劳动,交给爬虫和大模型自动化完成,让科研人从繁琐的文献整理中解放出来,把时间花在实验设计、数据分析等核心工作上。需要注意的是:爬取知网论文仅用于个人科研和学习,不得用于商业用途,遵守知网的用户协议和版权规定;大模型生成的摘要和关键词需后续核对原文,确保准确性。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1941

小姨想开水果店,那我用Django做一个天天生鲜项目!

注册基本逻辑 显示注册页面 1,放入templates模板文件中, 2,修改user,vews.py, 3,修改项目应用user的urls.py 4,在html导入静态资源, 进行注册处理 1,修改提交地址,定义register_handle函数,添加url到user的urls.py中 2,接收数据 #接收数据 username = request.POST.get(’user_name‘) password = request.POST.get('pwd) email = request

pythonlaodi的博客 2758

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Django发送邮件和itsdangerous模块的配合使用

项目需求:用户注册页面注册之后,系统会发送一封邮件到用户邮箱,用户点击链接以激活账户,其中链接中的用户信息需要加密处理一下 其中激活自己邮箱的smtp服务的操作就不在加以说明,菜鸟教程上有非常清晰的讲解,也可以去网上搜索详细步骤 首先在Django项目的settings文件中配置发送邮件相关的配置如下: 1 # 固定写法 2 EMAIL_BACKEND = 'djang...

weixin_34389926的博客 241

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

django-签名加密模块It's dangerous--加密token

首先安装包 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple itsdangerous //或 pip install itsdangerous 在使用时导入类 from itsdangerous import TimedJSONWebSignatureSerializer as Serializer from itsdangerous import SignatureExpired # 在 settings文件里面,可以导入其中的一个常量

a1209849629的博客 515

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

django项目小记

django 用户认证   用户登录后才可访问页面地址,否则跳转到登录页面(需要在settings.py 文件中定义LOGIN_URL字段), 跳转后的地址形式:http://127.0.0.1/login?next=要访问的页面地址 1 from django.contrib.auth.decorators import login_required 2 class...

weixin_30773135的博客 283

Celery

Celery Celery介绍 Celery是一个功能完备即插即用的任务队列。他使得我们不需要考虑复杂的问题,使用非常简单。celery适合异步处理问题,当发送邮件,或者上传文件,图片处理等等一些比较耗时的操作,我们可将其异步处理,这样用户不需要等待很久,提高用户体验, Celery的特点 1 简单,易于使用和维护,有丰富的文档 2 高效,单个celery进程每分钟可以处理数百万个任务 3 灵活,...

qq_43708577的博客 939

celery的使用

celery介绍 celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统。包括处理异步任务队列、分布式消息传递、实时或调度任务等比较耗时的任务。 环境: win10:作开发机 要有python环境(celery,redis) 虚拟机ubuntu:作服务器 要有python虚拟环境(celery,redis) 举个例子: 比如注册时需邮箱注册,那么django会把...

203

【django项目后台开发】Token和Session的区别、Token的生成方式(1)

一、什么是JWT Json web token (JWT), 是为了在⽹络应⽤环境间传递声明⽽执⾏的⼀种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适⽤于分布式站点的单点登录(SSO)场景。JWT的声明⼀般被⽤来在身份提供者和服务提供者间传递被认证的⽤户身份信息,以便于从资源服务器获取资源,也可以增加⼀些额外的其它业务逻辑所必须的声明信息,该token也可直接被⽤于认证,也可被加密。 二、token的认证和传统的session认证的区别 1、传统的session认证

python全栈 1434

django天天生鲜项目部署总结

部署环境:谷歌云vps/Ubuntu18.04.5/宝塔面板 额外用到的生产环境:miniconda/django3.1/python3.6/celery/redis/mysql/fastdfs/nginx/uwsgi 前期工作: 注册域名、买服务器、备案(国内服务器),申请ssl证书 1. 配置服务器 1.1. vps开启http、https流量,配置防火墙开放所有端口或者使用到的端口 例如:stmp邮件服务器:25、465(ssl) fastdfs:221...

m0_37871461的博客 534

python+django天天生鲜超市购物系统

根据毕业设计的需求,设计一个界面友好的网上生鲜超市系统,用户能够直观的浏览及查询到想要的信息,了解消费者的习惯,实现系统的基本功能,用户操作起来更方便。为了让管理者了解自己的权限,方便直观的操作后台,设计一个直观的后台管理,管理者能够快速的上手,并管理好网上超市的运营,同时给顾客带来便捷及实惠的客户体验。 系统功能模块应该包含:用户管理、购物车、前台超市商品展示、管理员、订单、用户留言、支付管理、超市商品信息管理等 系统由两个大模块组成:前台用户界面的实现,后台管理员对网站销售系统的管理。前台用户界面主要是

qq_1406299528的博客 2081

Python 框架学习 Django篇 (五) Session与Token认证

需要验证请求的cookie里面是否有sessionid,并且检查session表,看看是否存在session_key为该sessionid 的一条记录,该记录的数据字典里面是否 包含了 usertype 为 mgr 的 数据,我们可以把前面数据库增删改查视为我们的主页,只需要从主页函数调用之前去做下检查即可。

默子昂 3628

天天生鲜项目经验

一、项目架构 前端: 用户相关 商品相关 购物车相关 订单相关 后台管理 后端: 用户模块 商品模块 购物车模块 订单模块 后台管理模块 技术: mysql session 缓存服务器redis 异步任务处理celery 分布式文件存储系统fastdfs 二、用户认证模型 # django认证系统使用的用户模型 AUTH_USER_MODEL = "users.User" 1.类视图...

qq_20567419的博客 3168
上一篇: 类视图的使用,以及简单原理分析:django开发之天天生鲜项目知识总结【2】
下一篇: 如何通过django向用户发送邮件: django开发之天天生鲜项目知识总结【4】
我是py呀
博客等级 码龄8年 205粉丝 130原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值