1、用户认证模块 | Flask-Login

1.1 准备用于登陆的用户模型

模型继承UserMixin

 1 from app import db
 2 from werkzeug.security import generate_password_hash,check_password_hash
 3 from flask_login import UserMixin
 4 from . import login_manger
 5 
 6 @login_manger.user_loader
 7 def load_user(user_id):
 8     return User.query.get(int(user_id))
 9 
10 class Role(db.Model):
11     __tablename__ = 'roles'
12     id = db.Column(db.Integer,primary_key=True)
13     name = db.Column(db.String(64),unique=True)
14     users = db.relationship('User',backref='role')
15     def __repr__(self):
16         return '<Role %r>'%self.name
17 
18 class User(UserMixin,db.Model):
19     __tablename__ = 'users'
20     id = db.Column(db.Integer,primary_key=True)
21     username = db.Column(db.String(64),unique=True,index=True)
22     password_hash = db.Column(db.String(128))
23     role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
24     email = db.Column(db.String(128))
25 
26     @property
27     def password(self):
28         raise AttributeError('密码不可读')
29 
30     @password.setter
31     def password(self,password):
32         self.password_hash = generate_password_hash(password)
33 
34     def verify_password(self,password):
35         return check_password_hash(self.password_hash,password)
36 
37     def __repr__(self):
38         return '<Role %r>'%self.username
app/models.py

相关文章: