Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the UserMixin in Flask?

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?

like image 784
Sandip Swain Avatar asked Aug 03 '20 14:08

Sandip Swain


People also ask

What is authentication in Flask?

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.

What is the user model Flask?

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.


1 Answers

Flask-login requires a User model with the following properties:

  • has an is_authenticated() method that returns True if the user has provided valid credentials
  • has an is_active() method that returns True if the user’s account is active
  • has an is_anonymous() method that returns True if the current user is an anonymous user
  • has a get_id() method which, given a User instance, returns the unique ID for that object

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.

like image 193
Seyi Daniel Avatar answered Sep 22 '22 11:09

Seyi Daniel