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


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

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

    安装 itsdangerous

    pip install itsdangerous

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

    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()
      #settings.EMAIL_VERIFY_URL是个固定的链接地址
      verify_url = settings.EMAIL_VERIFY_URL + '?token=' + token 
      return verify_url

      2.解码

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

    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
    

      

    多思考也是一种努力,做出正确的分析和选择,因为我们的时间和精力都有限,所以把时间花在更有价值的地方。
  • 相关阅读:
    jmeter之如何减负-实现稳定超高并发测试(性能调优)之正确添加监听器
    正则表达式批量处理数据
    Jmeter计数器实现自增功能
    Python自动化 unittest生成测试报告(HTMLTestRunner)03
    [leetcode 14]Longest Common Prfix
    [leetcode 13]Roman to integer
    [leetcode 12] Inter to Roman
    [leetcode 11]Container With Most Water
    [eetcode 10]Regular Expression Matching
    [leetcode 9]Palindrome Number
  • 原文地址:https://www.cnblogs.com/LiuXinyu12378/p/11241615.html
Copyright © 2020-2023  润新知