我正在创建代表用户凭据的 SQLAlchemy 类。
我想要password
存储密码哈希值的字段。因此,我想通过以下方式覆盖其行为:
分配
credentials.password = value
时,它实际上存储值的散列比较
credentials.password == value
时,它实际上是与值的哈希值进行比较
我已阅读 SQLAlchemy 文档http://docs.sqlalchemy.org/en/rel_0_7/orm/mapper_config.html#using-descriptors-and-hybrids的以下部分
而且我想我确实了解如何解决第 1 个问题。
但是我不确定,如何做第二点。有没有办法以安全的方式做到这一点(不破坏 SQLAlchemy)?
这是示例模型:
class Credentials(Base):
__tablename__ = 'credentials'
id = Column(Integer, primary_key=True)
_password = Column('password', String)
@hybrid_property
def password(self):
return self._password
@password.setter(self):
self._password = hash(self._password)