How to Create Website Login Page Python Flask
Flask-Login
Flask-Login provides user session management for Flask. Information technology handles the common tasks of logging in, logging out, and remembering your users' sessions over extended periods of time.
Flask-Login is non bound to any detail database system or permissions model. The only requirement is that your user objects implement a few methods, and that y'all provide a callback to the extension capable of loading users from their ID.
Installation
Install the extension with pip:
$ pip install flask-login
Usage
Once installed, the Flask-Login is like shooting fish in a barrel to utilise. Allow's walk through setting up a bones application. Also please annotation that this is a very bones guide: we volition be taking shortcuts hither that you should never take in a real application.
To begin we'll fix a Flask app:
import flask app = flask.Flask(__name__) app.secret_key = 'super secret cord' # Modify this!
Flask-Login works via a login manager. To boot things off, we'll gear up upwards the login managing director by instantiating it and telling information technology almost our Flask app:
import flask_login login_manager = flask_login.LoginManager() login_manager.init_app(app)
To keep things simple we're going to use a dictionary to represent a database of users. In a real application, this would be an actual persistence layer. Notwithstanding it's important to point out this is a feature of Flask-Login: information technology doesn't care how your data is stored so long every bit you tell it how to retrieve it!
# Our mock database. users = {'foo@bar.tld': {'countersign': 'secret'}}
Nosotros also need to tell Flask-Login how to load a user from a Flask request and from its session. To do this we demand to ascertain our user object, a user_loader
callback, and a request_loader
callback.
course User(flask_login.UserMixin): pass @login_manager.user_loader def user_loader(electronic mail): if e-mail not in users: return user = User() user.id = email return user @login_manager.request_loader def request_loader(request): email = request.form.go('email') if electronic mail non in users: render user = User() user.id = e-mail return user
Now we're ready to define our views. We can start with a login view, which will populate the session with hallmark $.25. After that we tin can define a view that requires hallmark.
@app.route('/login', methods =['Go', 'Post']) def login(): if flask.request.method == 'Go': return ''' <form action='login' method='Postal service'> <input type='text' name='e-mail' id='email' placeholder='email'/> <input type='password' proper name='countersign' id='password' placeholder='password'/> <input type='submit' proper noun='submit'/> </course> ''' email = flask.request.form['email'] if email in users and flask.request.form['countersign'] == users[electronic mail]['password']: user = User() user.id = e-mail flask_login.login_user(user) return flask.redirect(flask.url_for('protected')) return 'Bad login' @app.route('/protected') @flask_login.login_required def protected(): render 'Logged in as: ' + flask_login.current_user.id
Finally nosotros tin define a view to clear the session and log users out:
@app.route('/logout') def logout(): flask_login.logout_user() return 'Logged out'
We now have a bones working application that makes use of session-based hallmark. To circular things off, we should provide a callback for login failures:
@login_manager.unauthorized_handler def unauthorized_handler(): return 'Unauthorized', 401
Complete documentation for Flask-Login is bachelor on ReadTheDocs.
Contributing
We welcome contributions! If you would like to hack on Flask-Login, please follow these steps:
- Fork this repository
- Brand your changes
- Install the dev requirements with
pip install -r requirements/dev.txt
- Submit a pull request after running
tox
(ensure it does not error!)
Delight give united states of america acceptable time to review your submission. Cheers!
How to Create Website Login Page Python Flask
DOWNLOAD HERE
Source: https://github.com/maxcountryman/flask-login
Posted by: eugeniatwouldes.blogspot.com
Comments
Post a Comment