flask_loginはログインが必要なページを @login_requiredデコレーターで簡単に管理することができる便利なライブラリです。要点を備忘録として記載します。
LoginManager
login_manager = LoginManager()とすることで、flask-loginライブラリとアプリケーションを協調させて動作させることができる
login_manager.init_app(アプリケーション名)
アプリケーションとFlask-Loginを連携させるコード。
またflask-loginはセッションを利用するから、シークレットキーを設定する必要がある。
そうしないと、Flaskからエラーメッセージが表示される。
@login_manager.user_loader
例)def load_user(user_id):
return User.get(user_id)
@login_manager.user_loaderは、セッションに保存された、ログインしたユーザーを返すためのコード。
UnicodeIDを取得し、対応するユーザーオブジェクトを返す必要がある。
IDが有効でない場合は、None(例外を発生させない)を返す。
重要なプロパティ
・is_authenticated:ユーザーの認証されているかの確認
・is_active:ユーザーがアクティブかどうかの確認
flask.flash
ログインできた場合に表示する
@login_required
ユーザーがログインしていなければ実行されない
flask.request.args.get('next’)
flask_login.login_urlを使用してログイン後の次のリダイレクト先が指定されていた場合にはそのURLへ、そうでない場合は指定した他のページへリダイレクトする、という処理。
next は url の一部みたいなもの。
その url は flask_login.login_url で作られて、nextでそれを指定することができるということ。
login_manager.login_view = "users.login"
上記の書き方をすることが多いため、このように書いています。
デフォルトでは、ユーザーがログインせずに@login_requiredデコレータのビューにアクセスしようとすると、Flask-Loginはメッセージをフラッシュし、ログインビューにリダイレクトする。
まとめ
flask_loginはわかってしまえば簡単ですが、所々複雑な点もあると思う。
一緒に頑張りましょ