flask-login解读
摘自: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)
累了,明天继续。