为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 |