0
2

More than 1 year has passed since last update.

flask_loginを使う際の要点

Posted at

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はわかってしまえば簡単ですが、所々複雑な点もあると思う。
一緒に頑張りましょ

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2