首页 > 其他分享 >给忘记密码页,添加逻辑,实现密码找回

给忘记密码页,添加逻辑,实现密码找回

时间:2024-02-20 17:00:11浏览次数:32  
标签:return self db 密码找回 密码 添加 lineEdit password email

使用 PyQt5(PySide2)+SQLAlchemy 做一个登录注册页(六)

本文将介绍自己用 PyQt5+SQLAlchemy 做的一个登录注册页,使用邮箱接收验证码本文介绍是前后端未分离的实现方式,后续将出一个前后端分离的,你可以将 PyQt5 改为 PySide2 以获得更宽松的开源协议

本文由于涉及到的代码较多,将会是一个系列,会有多篇文章

系列文章索引

  1. 设计登录注册页面
  2. 添加代码运行登录注册页,并为其添加一些样式,和调用资源文件
  3. 使用 SQLAlchemy 实现用户数据库管理
  4. 为登录页,添加登录逻辑代码,实现登录
  5. 给注册页,添加注册逻辑代码,实现用户的注册验证
  6. 给忘记密码页,添加逻辑,实现密码找回

必要说明

  • 使用的环境 requirements.txt
# Python3.8.10 x32
# Windows10 x64
PyQt5
pyqt5-tools
PyMySQL~=1.1.0
sqlalchemy~=2.0.25
bcrypt~=4.1.2
email-validator
pydantic
yagmail
  • 项目结构(无新增)

给忘记密码页,添加逻辑,实现密码找回

第1步

修改crud/crud.py,实现用户表更新

class CRUDUser(CRUD):

    def update(self, db: Session, email: str, update_data: dict):
        """更新"""
        db_user = db.query(models.User).filter(
            and_(models.User.email == email, models.User.deleted == 0)).update(update_data)
        return self._commit(db, db_user)


第2步

添加忘记登录

  1. 初始化 GitHub完整代码
# 在 init_ui 方法中,添加忘记密码页绑定信号
self.lineEdit_7.textEdited.connect(lambda: self.check_password(self.lineEdit_7, self.lineEdit_8, self.label_14))
self.lineEdit_8.textEdited.connect(lambda: self.check_password(self.lineEdit_7, self.lineEdit_8, self.label_14))
self.pushButtonSend2.clicked.connect(lambda: self.send_captcha(self.lineEdit_6, self.pushButtonSend2))
self.pushButtonForgetOk.clicked.connect(self.forget_password)

  1. 添加必填校验 GitHub完整代码
def forget_password_required(self):
    self.email = self.lineEdit_6.text()
    self.password = self.lineEdit_7.text()
    self.captcha = self.lineEdit_9.text()
    if not self.email.strip():
        self.basic_function.info_message("邮箱地址不能为空")
        return False
    elif not self.password.strip():
        self.basic_function.info_message("用户密码不能为空")
        return False
    elif not self.repeat_password.strip():
        self.basic_function.info_message("重复密码不能为空")
        return False
    elif not self.captcha.strip():
        self.basic_function.info_message("邮箱验证码不能为空")
        return False
    return True
  1. 检查邮箱是否是已经注册的用户 GitHub完整代码
def forget_password_check_email_exist(self):
    """检查邮箱是否是已经注册的用户"""
    with SessionLocal() as db:
        get_email = self.user.get_user_by_email(db, self.email)
    if not get_email:
        self.basic_function.info_message("邮箱地址系统中不存在")
        return
    return True

  1. 实现忘记密码 GitHub完整代码
def forget_password(self):
    """忘记密码动作"""
    if (not self.forget_password_required() or
            not self.forget_password_check_email_exist() or
            not self.check_email_format() or
            not self.check_captcha()):  # 数据校验
        return
    bytes_my_password = bytes(self.password, encoding="utf-8")
    bytes_my_hash_password = bcrypt.hashpw(bytes_my_password, bcrypt.gensalt(rounds=13))
    str_my_hash_password = bytes.decode(bytes_my_hash_password)
    with SessionLocal() as db:
        self.user.update(db, self.email, {models.User.password: str_my_hash_password})
        self.confirm_string.update(db, self.email, {models.ConfirmString.deleted: '1'})
    # 注册成功后,判断是否选中找回密码后直接登录,若未选中,则切换会登录页
    if self.checkBox_3.isChecked():
        self.accept()
    else:
        self.stackedWidget.setCurrentIndex(0)

GitHub完整代码
本文章的原文地址
GitHub主页

标签:return,self,db,密码找回,密码,添加,lineEdit,password,email
From: https://www.cnblogs.com/yqbaowo/p/18023328

相关文章

  • IOT-OPC UA Client C# 实现方式->账号密码形式
    本文只要记录OPCUA方式读取PLC数据,默认opcserver已经配置成功;一、外部引用opcuahelperusingOpc.Ua;usingOpcUaHelper;二、源码如下;>点击查看代码usingOpc.Ua;usingOpcUaHelper;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSyst......
  • 给 PyQt5 注册页,添加注册逻辑代码,实现用户的注册验证
    使用PyQt5(PySide2)+SQLAlchemy做一个登录注册页(五)本文将介绍自己用PyQt5+SQLAlchemy做的一个登录注册页,使用邮箱接收验证码,本文介绍是前后端未分离的实现方式,后续将出一个前后端分离的,你可以将PyQt5改为PySide2以获得更宽松的开源协议本文由于涉及到的代码较多,将会是一......
  • 【转载】linux利用crontab添加定时任务详解
    crontab作用:添加,查询,删除系统计划任务的指令。[root@localhost~]#crontab[选项]选项:   -e:   编辑crontab定时任务   -l:   查询crontab任务   -r:   删除当前用户所有的crontab任务1234512345[root@localhost~]#crontab-e......
  • ESXi 8.0 下改Delll idrac密码
    ESXi8.0 下下载:https://www.dell.com/support/home/zh-cn/product-support/product/poweredge-r740/drivershttps://dl.dell.com/FOLDER09667707M/1/Dell-iDRACTools-Web-ESXi.VIB-11.1.0.0-5294_A00.zip?uid=80aaf26c-07a6-4c60-3f53-df177f2da03f&fn=Dell-iDRACTools-We......
  • 【转】在 github 添加一个 SSH key
    参考:https://zhuanlan.zhihu.com/p/345846941、登录到 https://github.com,在设置页面的左侧菜单里找到SSHandGPGkeys2、打开GitBash3、运行 ssh-keygen-trsa-b4096-C"你的邮箱",注意要填写与github.com里相同的邮箱,不需要接收验证码啥的4、按回车三次,就成......
  • Qt QLineEdit用作密码输入时的使用
    1#include"testqt.h"2#include<QIntValidator>34testqt::testqt(QWidget*parent)5:QWidget(parent)6{7ui.setupUi(this);8/*9enumEchoMode{Normal,//默认普通模式10NoEcho,//输入内容有但是显示不出来(......
  • 磐维数据库自动添加/删除 分区脚本
    目录脚本功能脚本使用示例一、自动按天添加分区二、自动按天删除分区脚本功能磐维数据库自动按天添加/删除分区脚本使用示例一、自动按天添加分区1、shell脚本的内容panwei_add_partition.sh#!/bin/bash.~/.bash_profilefordbin"nlkf""nlkf1""nlkf2""nlkf3""nlk......
  • Mogdb / opengauss 用户密码错误,用户被锁
    问题概述xxx客户新上一套opengauss数据库,在测试中程序里用户的密码配置错误,导致用户被锁解决方案1、跟oracle语法一样alteruserxxxaccountunlock;2、需要等一天后自动解锁模拟问题因没有opengauss的环境,测试环境选择Mogdb1、准备测试环境,输入错误的密码。如下[omm@......
  • 将nginx、frp、hfs等exe添加为Windows服务
    三个exe当中,hfs是不需要参数的,而nginx、frpc都需要指定配置文件。最终的解决方案,还是将WinSW.EXE放到目标exe相同的目录下,这样可以省去很多的麻烦,至少目前看来,可以省去指定配置文件的具体路径这个操作。  安装为服务也很简单:直接就是install命令;相应的,卸载服务就是uninsta......
  • 如何使用ComPDFKit Web SDK添加在线编辑PDF文档功能
    文档编辑功能提供了一系列的操作页面的能力,使用户能够控制文档结构,并调整文档的布局和格式,确保文档内容以合理有序的方式精准呈现。ComPDFKit文档编辑的优势插入或删除页面: 向文档插入或删除页面,以满足特定的排版要求。文档结构调整: 调整页面排列顺序或旋转方向,以满足特定......