[PYTHON] J'ai pu implémenter l'authentification d'application Web avec flask-login

Aperçu

Je crée une application Web à l'aide de flask. J'ai pu l'implémenter avec presque un copier-coller de README du site auquel j'ai fait référence ci-dessous. Le code de cet article doit écrire la logique de correspondance de mot de passe.

Le site que j'ai utilisé comme référence

https://github.com/maxcountryman/flask-login

documentation officielle pour flask-login https://flask-login.readthedocs.io/en/latest/

Description de flask-login

Flask-Login fournit la gestion de session utilisateur Flask. Gère les tâches courantes telles que la connexion, la déconnexion et la mémorisation des sessions utilisateur à long terme.

la mise en oeuvre

$ pip install flask flask-login
import flask
import flask_login


login_manager = flask_login.LoginManager()
login_manager.init_app(app)

app = flask.Flask(__name__)
app.secret_key = 'super secret string'  # Change this!

# Our mock database.
users = {'[email protected]': {'password': 'secret'}}

class User(flask_login.UserMixin):
    pass


@login_manager.user_loader
def user_loader(email):
    if email not in users:
        return

    user = User()
    user.id = email
    return user


@login_manager.request_loader
def request_loader(request):
    email = request.form.get('email')
    if email not in users:
        return

    user = User()
    user.id = email

    # DO NOT ever store passwords in plaintext and always compare password
    # hashes using constant-time comparison!
    user.is_authenticated = request.form['password'] == users[email]['password']

    return user

@app.route('/login', methods=['GET', 'POST'])
def login():
    if flask.request.method == 'GET':
        return '''
               <form action='login' method='POST'>
                <input type='text' name='email' id='email' placeholder='email'/>
                <input type='password' name='password' id='password' placeholder='password'/>
                <input type='submit' name='submit'/>
               </form>
               '''

    email = flask.request.form['email']
    if flask.request.form['password'] == users[email]['password']:
        user = User()
        user.id = email
        flask_login.login_user(user)
        return flask.redirect(flask.url_for('protected'))

    return 'Bad login'


@app.route('/protected')
@flask_login.login_required
def protected():
    return 'Logged in as: ' + flask_login.current_user.id

@app.route('/logout')
def logout():
    flask_login.logout_user()
    return 'Logged out'

@login_manager.unauthorized_handler
def unauthorized_handler():
    return 'Unauthorized'

if __name__ == '__main__':
    app.run(host="0.0.0.0",port=8000,debug=True)

tester

Vous pouvez essayer de l'implémenter en vous basant sur les éléments suivants. https://github.com/maxcountryman/flask-login/blob/master/test_login.py

Recommended Posts

J'ai pu implémenter l'authentification d'application Web avec flask-login
J'ai essayé d'implémenter CVAE avec PyTorch
J'étais accro à ne pas pouvoir obtenir une adresse e-mail de Google avec l'authentification django-allauth
Python: j'ai pu récurer en lambda
J'ai pu me moquer d'AWS-Batch avec python, moto, donc je vais le laisser
J'ai essayé d'implémenter et d'apprendre DCGAN avec PyTorch
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'étais accro au grattage avec Selenium (+ Python) en 2020
J'ai essayé d'implémenter le perceptron artificiel avec python
J'ai essayé d'implémenter Grad-CAM avec keras et tensorflow
J'ai essayé d'implémenter SSD avec PyTorch maintenant (Dataset)
Python: peut être répété en lambda
Déployer une application Web créée avec Streamlit sur Heroku
Un débutant a essayé de colorier un dessin au trait avec un chainer. J'ai pu le faire.
Comment déployer une application Web créée avec Flask sur Heroku
Je veux pouvoir analyser des données avec Python (partie 3)
[IOS] Animation GIF avec Pythonista3. J'en étais accro.
Je veux pouvoir analyser des données avec Python (partie 1)
J'ai essayé de mettre en œuvre une évasion (type d'évitement de tromperie) avec Quantx
J'ai essayé d'implémenter PCANet
Je veux pouvoir analyser des données avec Python (partie 4)
Je veux pouvoir analyser des données avec Python (partie 2)
J'ai essayé d'implémenter ListNet d'apprentissage de rang avec Chainer
J'ai essayé de mettre en œuvre le chapeau de regroupement de Harry Potter avec CNN
J'ai essayé d'implémenter StarGAN (1)
J'ai essayé d'implémenter SSD avec PyTorch maintenant (édition du modèle)
Notez que j'étais accro à accéder à la base de données avec mysql.connector de Python en utilisant une application Web
J'ai créé un serveur Web avec Razpai pour regarder des anime
Ce à quoi j'étais accro avec json.dumps dans l'encodage base64 de Python
J'ai essayé de résumer ce qui était sorti avec Qiita avec Word cloud
Une note à laquelle j'étais accro lors de la création d'une table avec SQL Alchemy
J'ai essayé d'implémenter la classification des phrases par Self Attention avec PyTorch
J'ai essayé d'implémenter Deep VQE
J'ai essayé webScraping avec python.
J'ai essayé de mettre en place une validation contradictoire
Je veux faire ○○ avec les Pandas
J'ai essayé d'implémenter Realness GAN
Je veux déboguer avec Python
J'étais accro au multitraitement + psycopg2
J'ai pu imprimer l'imprimante thermique "PAPERANG" depuis Python (Windows10, Python3.6)
J'ai essayé de mettre en œuvre un apprentissage en profondeur qui n'est pas profond avec uniquement NumPy
J'ai essayé de mettre en œuvre une blockchain qui fonctionne réellement avec environ 170 lignes
J'étais accro à l'exécution de tensorflow sur GPU avec le pilote NVIDIA 440 + CUDA 10.2
J'étais accro à la création d'un environnement Python venv avec VS Code
Une histoire à laquelle j'étais accro à essayer d'obtenir une URL de vidéo avec tweepy
Utilisez Python de Java avec Jython. J'étais aussi accro.
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
J'étais accro à ne pas pouvoir utiliser Markdown pour la description longue de pypi
J'étais accro à essayer Cython avec PyCharm, alors prenez note
J'ai pu apprendre par machine l'algorithme de tri (avec un indicateur de longueur et d'ordre variable) avec RNN qui manipule la mémoire!
J'ai essayé d'implémenter PLSA en Python
Je veux détecter des objets avec OpenCV
J'ai essayé d'implémenter la permutation en Python
J'ai essayé de visualiser AutoEncoder avec TensorFlow
Jouez comme une application Web avec ipywidgets
J'ai essayé de commencer avec Hy
Je veux écrire un blog avec Jupyter Notebook
J'ai essayé d'implémenter PLSA dans Python 2
J'étais accro à pip installer mysqlclient