摘自: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)
累了,明天繼續。
