from datetime import datetime
from werkzeug.security import generate_password_hash
from werkzeug.security import check_password_hash
from flask_login import UserMixin
from app import db
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
email = db.Column(db.String(64), index=True, unique=True)
password_hash = db.Column(db.String(64))
posts = db.relationship('Post', backref='author', lazy='dynamic')
def set_password(self, password):
self.password_hash = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.password_hash, password)
def __repr__(self):
return '<User{}>'.format(self.username)
After reading the official documentation I couldn't yet understand the purpose of UserMixin
. Can anyone please describe it in brief?
By default, Flask-Login uses sessions for authentication. This means you must set the secret key on your application, otherwise Flask will give you an error message telling you to do so. See the Flask documentation on sessions to see how to set a secret key.
Flask-User can be configured to allow for multiple emails per users, pointing to the same user account and sharing the same password. In this configuration, a separate UserEmail data-model class must be specified. The is_primary property defines which email receives account notification emails.
Flask-login requires a User model with the following properties:
UserMixin class provides the implementation of this properties. Its the reason you can call for example is_authenticated
to check if login credentials provide is correct or not instead of having to write a method to do that yourself.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With