点此进入CSDN

点此添加QQ好友 加载失败时会显示




【Python】Django【邮箱验证】 后端验证如何生成 token加密验证码 与如何解码!!!!

1.生成token验证码方案   ,使用itsdangerous    大宝剑,

可以序列化出验证码,并能设置过期时间

安装 itsdangerous

pip install itsdangerous

 

对用户名和邮箱进行序列化生成token码,有效期3600秒,过期后这个token码不能进行解码

 

 

1
2
3
4
5
6
7
8
9
10
11
12
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
from django.conf import settings
 
def generate_verify_email_url(user):
    """
    生成邮箱验证链接
    :param user: 当前登录用户
    :return: verify_url
    """
    serializer = Serializer(settings.SECRET_KEY, expires_in=3600)
    data = {'user_id': user.id, 'email': user.email}
    token = serializer.dumps(data).decode()<br>  #settings.EMAIL_VERIFY_URL是个固定的链接地址  verify_url = settings.EMAIL_VERIFY_URL + '?token=' + token <br>  return verify_url

  2.解码

对上边生成的token码进行解码,过期不能解码,需要使用相同的序列化器配置

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer,BadData
from django.conf import settings
 
 
def check_verify_email_token(token):
    """
    验证token并提取user
    :param token: 用户信息签名后的结果
    :return: user, None
    """
    serializer = Serializer(settings.SECRET_KEY, expires_in=3600)
    try:
        data = serializer.loads(token)
    except BadData:
        return None
    else:
        user_id = data.get('user_id')
        email = data.get('email')
        try:
            user = User.objects.get(id=user_id, email=email)
        except User.DoesNotExist:
            return None
        else:
            return user

  

 

posted @   高颜值的殺生丸  阅读(2042)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App

作者信息

昵称:

刘新宇

园龄:4年6个月


粉丝:1209


QQ:522414928

点击右上角即可分享
微信分享提示