https://blog.miguelgrinberg.com/post/restful-authentication-with-flask
After discussing with people in #help
uuid is not a good usage of tokens:
This is how the father of flask Miguel Grinberg recommends:
import base64
from datetime import datetime, timedelta
import os
class User(UserMixin, PaginatedAPIMixin, db.Model):
# ...
token = db.Column(db.String(32), index=True, unique=True)
token_expiration = db.Column(db.DateTime)
# ...
def get_token(self, expires_in=3600):
now = datetime.utcnow()
if self.token and self.token_expiration > now + timedelta(seconds=60):
return self.token
self.token = base64.b64encode(os.urandom(24)).decode('utf-8')
self.token_expiration = now + timedelta(seconds=expires_in)
db.session.add(self)
return self.token
def revoke_token(self):
self.token_expiration = datetime.utcnow() - timedelta(seconds=1)
@staticmethod
def check_token(token):
user = User.query.filter_by(token=token).first()
if user is None or user.token_expiration < datetime.utcnow():
return None
return user
https://blog.miguelgrinberg.com/post/restful-authentication-with-flask
After discussing with people in #help
uuid is not a good usage of tokens:
This is how the father of flask Miguel Grinberg recommends: