我目前正试图使用bcrypt从种子中加密/散列我的密码,并将其存储在MYSQL中,但它一直给我相同的密码.我正在使用python.任何帮助都将不胜感激!

使用者py公司

from app.db import Base
from sqlalchemy.orm import validates
from sqlalchemy import Column, Integer, String
salt = bcrypt.gensalt()


class User(Base):
  __tablename__ = 'users'
  id = Column(Integer, primary_key=True)
  username = Column(String(50), nullable=False)
  email = Column(String(50), nullable=False, unique=True)
  password = Column(String(200), nullable=False)

  @validates('email')
  def validate_email(self, key, email):
    # make sure email address contains @ character
    assert '@' in email

    return email


@validates('password')
def validate_password(self, key, password):
  assert len(password) > 4

  # encrypt password
  return bcrypt.hashpw(password.encode('utf-8'), salt)

种子.py公司

from app.models import User
from app.db import Session, Base, engine

# drop and rebuild tables
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)

db = Session()

# insert users
db.add_all([
  User(username='alesmonde0', email='nwestnedge0@cbc.ca', password='password123'),
  User(username='jwilloughway1', email='rmebes1@sogou.com', password='password123'),
  User(username='iboddam2', email='cstoneman2@last.fm', password='password123'),
  User(username='dstanmer3', email='ihellier3@goo.ne.jp', password='password123'),
  User(username='djiri4', email='gmidgley4@weather.com', password='password123')
])

db.commit()

db.close()

推荐答案

假设:

  • 您复制的代码与原始文件中的代码完全相同
  • "一直给我相同的密码"意味着在数据库中保存开放文本密码,而不是来自验证器的哈希

如果上述两种方法都正确,则问题在于标识,即"validate\u password"方法根本不在用户类中.

Python相关问答推荐

如何使用Python将工作表从一个Excel工作簿复制粘贴到另一个工作簿?

如何在Windows上用Python提取名称中带有逗号的文件?

无法通过python-jira访问jira工作日志(log)中的 comments

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

2D空间中的反旋算法

梯度下降:简化要素集的运行时间比原始要素集长

名为__main__. py的Python模块在导入时不运行'

Python中的变量每次增加超过1

用渐近模计算含符号的矩阵乘法

(Python/Pandas)基于列中非缺失值的子集DataFrame

pysnmp—lextudio使用next()和getCmd()生成器导致TypeError:tuple对象不是迭代器''

如何使用正则表达式修改toml文件中指定字段中的参数值

如何在一组行中找到循环?

如何使用Azure Function将xlsb转换为xlsx?

使用polars. pivot()旋转一个框架(类似于R中的pivot_longer)

提取数组每行的非零元素

有没有办法让Re.Sub报告它所做的每一次替换?

如何使用pytest在traceback中找到特定的异常

我什么时候应该使用帆布和标签?

FileNotFoundError:[WinError 2]系统找不到指定的文件:在os.listdir中查找扩展名