Django调用SECRET_KEY对数据进行加密

对数据进行加密

在Django中进行加密可以直接调用django配置文件中的SECRET_KEY , 同时还需要导入itsdangerous模块中的TimedJSONWebSignatureSerializer进行加密

1. 实现加密方法 , 生成用户加密链接

# 生成用户加密链接
def generate_verify_email_url(user):
    # 调研加密方法
    s = TJ(settings.SECRET_KEY , 600) # 加密方法 , 有效时间
    data = {
        'id' : user.id,
        'email' : user.email
    }
    # 进行加密
    token = s.dumps(data)
    # 获得加密链接
    token_url = settings.EMAIL_VERIFY_URL + "?token=" + token.decode()
    
    return token_url

3. 校验加密信息

def check_verify_email_url(token):
    # 对链接进行解密
    s = TJ(settings.SECRET_KEY , 600)
    data = s.loads(token)
    user_id = data.get('user_id')
    email = data.get('email')

    # 从数据库中获取邮箱 , 使用try语句防止查询报错
    try:
        user = User.objects.get(id=user_id ,email=email)
    except:
        return None
    else:
        return user

三. 校验用户请求

当用户点击邮箱发送的链接会像服务器发送一个请求

# 校验邮箱信息
class VerifyEmailView(View):
    def get(self , request):
        token = request.GET.get('token')
        if not token:
            return HttpResponseForbidden('缺少必要参数')

        user = check_verify_email_url(token)
        if not user:
            return HttpResponseForbidden("用户不存在")

        # 盘带你邮箱是否验证码
        if user.email_active == 0:
            # 邮箱没有验证
            user.email_active = 1
            user.save()
            return redirect('user_info_center')
        else:
            return HttpResponseForbidden("该邮箱已经注册")

创建视图

# 验证邮箱
    path('verification/' , views.VerifyEmailView.as_view() ),
相关推荐
Rookie也要加油17 分钟前
01_SQLite
数据库·sqlite
向上的车轮18 分钟前
Django学习笔记五:templates使用详解
笔记·学习·django
liuxin3344556622 分钟前
教育技术革新:SpringBoot在线教育系统开发
数据库·spring boot·后端
看山还是山,看水还是。1 小时前
MySQL 管理
数据库·笔记·mysql·adb
fishmemory7sec1 小时前
Koa2项目实战2(路由管理、项目结构优化)
数据库·mongodb·koa
momo小菜pa1 小时前
【MySQL 09】表的内外连接
数据库·mysql
Jasonakeke1 小时前
【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化
数据库·mysql
程序猿小D2 小时前
第二百六十九节 JPA教程 - JPA查询OrderBy两个属性示例
java·开发语言·数据库·windows·jpa
小宇成长录2 小时前
Mysql:数据库和表增删查改基本语句
数据库·mysql·数据库备份
团儿.3 小时前
解锁MySQL高可用新境界:深入探索MHA架构的无限魅力与实战部署
数据库·mysql·架构·mysql之mha架构