使用场景
在开发过程中,需要存储用户密码时,通过我们不会将用户输入的密码已明文的方式进行存储,而是通过加密的方式进行存储,提供系统的安全性,避免数据泄露带来更加严重的危害。 下面通过一个demo
例子来演示基本实现过程。
代码
# -*- coding: utf-8 -*-
# @File : 02-类属性.py
from werkzeug.security import generate_password_hash, check_password_hash
class UserModel:
username = None
_password = None
def __init__(self, *args, **kwargs):
if 'password' in kwargs:
self.password = kwargs.get('password')
kwargs.pop('password')
super(UserModel, self).__init__(*args, **kwargs)
@property
def password(self):
return self._password
@password.setter
def password(self, newpwd):
self._password = generate_password_hash(newpwd)
def check_password(self, rawpwd):
return check_password_hash(self.password, rawpwd)
print(UserModel.username)
print(UserModel(password='aaa').password)
# 进行数据校验,正确返回True, 错误返回False
print(UserModel.check_password(UserModel(password='aaa'), 'aaa'))
下面是打印的结果信息。