为Flask提供用户身份验证和会话管理。
项目描述
Flask-Login
Flask-Login为Flask提供用户会话管理。它处理登录、登出以及记住用户长时间会话的常见任务。
Flask-Login 不绑定到任何特定的数据库系统或权限模型。唯一的要求是您的用户对象实现一些方法,并提供一个回调函数,以便从用户ID加载用户。
安装
使用pip安装扩展
$ pip install flask-login
用法
安装完成后,Flask-Login的使用很简单。让我们一步步设置一个基本的应用程序。请注意,这是一个非常基本的指南:我们在这里会采取一些捷径,这些捷径在真实的应用程序中不应使用。
首先,我们将设置一个Flask应用程序
import flask
app = flask.Flask(__name__)
app.secret_key = 'super secret string' # Change this!
Flask-Login通过登录管理器工作。为了开始,我们将通过实例化它并告诉它关于我们的Flask应用程序来设置登录管理器
import flask_login
login_manager = flask_login.LoginManager()
login_manager.init_app(app)
为了简单起见,我们将使用字典来表示用户数据库。在实际应用程序中,这将是一个实际的持久层。然而,重要的是指出这是Flask-Login的一个特性:它不关心你的数据是如何存储的,只要你告诉它如何检索它!
# Our mock database.
users = {'foo@bar.tld': {'password': 'secret'}}
我们还需要告诉Flask-Login如何从Flask请求和会话中加载用户。为此,我们需要定义我们的用户对象,一个user_loader
回调,以及一个request_loader
回调。
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
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 email in users and 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', 401
有关Flask-Login的文档可在ReadTheDocs上找到。有关配置的完整理解,请参阅源代码。
贡献
我们欢迎贡献!如果您想对Flask-Login进行黑客攻击,请按照以下步骤操作
- 分叉此存储库
- 进行您的更改
- 使用
pip install -r requirements/dev.txt
安装dev要求 - 在运行
tox
后提交拉取请求(确保没有错误!)
请给我们足够的时间来审查您的提交。谢谢!
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
Flask-Login-0.6.3.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5e23d14a607ef12806c699590b89d0f0e0d67baeec599d75947bf9c147330333 |
|
MD5 | 689564b8b7f3782f0db382b7aa85bbc2 |
|
BLAKE2b-256 | c36e2f4e13e373bb49e68c02c51ceadd22d172715a06716f9299d9df01b6ddb2 |
Flask_Login-0.6.3-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 849b25b82a436bf830a054e74214074af59097171562ab10bfa999e6b78aae5d |
|
MD5 | 7a765091d853ee6284648f3a61bc6902 |
|
BLAKE2b-256 | 59f567e9cc5c2036f58115f9fe0f00d203cf6780c3ff8ae0e705e7a9d9e8ff9e |