Flask-Admin密文保存用户密码

2017-05-25  本文已影响485人  嘿嘿_小于同学

1、用户模型

class User(db.Model, UserMixin):
    __tablename__ = 'users'

    id = db.Column(db.Integer(), primary_key=True)
    username = db.Column(db.String(), unique=True)  
    password = db.Column(db.String(), default='123456')  
    name = db.Column(db.String)  
    grade = db.Column(db.String)  

    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
    role = db.relationship('Role', back_populates='user')

    # pythonic使用@property将方法变成属性
    def set_password(self, password):
        self.password = generate_password_hash(password)

    def check_password(self, value):
        return check_password_hash(self.password, value)

    def __repr__(self):
        return self.username

    # 回调函数
    @staticmethod
    @login_manager.user_loader
    def load_user(user_id):
        return User.query.get(int(user_id))

2、flask-admin添加用户记录

record
添加一个用户记录发现,密码并没有被加密!!
3、使用hash加密密码
解决方法:在我们自定义的视图中是实现函数on_model_change
class UserView(ModelView):
    page_size = 15
    
    def on_model_change(self, form, User, is_created=False):
        # 调用用户模型中定义的set方法
        User.set_password(form.password.data)

再添加一个用户信息


发现用户密码已经被加密了!

上一篇下一篇

猜你喜欢

热点阅读