flasklogin解读

摘自:https://github.com/maxcountryman/flask-login/blob/master/docs/index.rst  

flask-login为flask提供用户的session管理机制。它可以处理登陆、退出和session等的服务。

  作用:

    1.将用户的id储存在session中,方便登陆、退出等流程。

    2.Let you restrict views to logged-in (or logged-out) users

    3.处理“remember me”的功能。

    4.避免session被cookies保存。

    5.集成到flask。

  不能实现的功能:

    1.数据库功能

    2.限制使用用户名和密码,openid等认证方法。

    3.处理登陆之外的权限。

    4.处理用户注册和账户恢复。

  配置你的应用:

    首先需要创建一个LoginManager类:

login_manager = LoginManager()

    login Manager将你的应用和flask-login联系起来,例如通过id来找到对应的用户,或者当用户登陆时候需要如何处理。在应用创建的时候,导入如下代码:

login_manager.setup_app(app)

  如何工作:

  你需要添加一个~LoginManager.user_loader回调函数,它的作用是根据id找到对应的user,例如:

@login_manager.user_loader
def load_user(userid):
    return User.get(userid)

  如果没有找到,返回None。此时的id将会自动从session中移除。

  一旦用户认证通过,直接调用login_user函数:

@app.route("/login", methods=["GET", "POST"])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        # login and validate the user...
        login_user(user)
        flash("Logged in successfully.")
        return redirect(request.args.get("next") or url_for("index"))
    return render_template("login.html", form=form)

  当用户退出时:

@app.route("/logout")
@login_required
def logout():
    logout_user()
    return redirect(somewhere)

累了,明天继续。

原文地址:https://www.cnblogs.com/bracken/p/2932788.html