<Flask> Flask-Login と Blinker
Flask-Login
をちら見。
Flask-Login — Flask-Login 0.3.2 documentation
これは、たぶん、
ユーザ user
のログイン、ログアウトを管理するセッション session
を、
ちこっと便利に使うためのモジュールっぽい。
login_user()
のコードを見ると、
def login_user(uer, remeber=False, force=False): ''' Logs a user in. You should pass the actual user object to this. If the user's `is_active` method returns ``False``, they will not be logged in unless `force` is ``True``. This will return ``True`` if the log in attempt succeeds, and ``False`` if it fails (i.e. because the user is inactive). :param user: The user object to log in. :type user: object :param remember: Whether to remember the user after their session expires. Defaults to ``False``. :type remember: bool :param force: If the user is inactive, setting this to ``True`` will log them in regardless. Defaults to ``False``. :type force: bool ''' if not force and not user.is_active(): return False user_id = getattr(user, current_app.login_manager.id_attribute)() session['user_id'] = user_id session['_fresh'] = True session['_id'] = _create_identifier() if remember: session['remember'] = 'set' _request_ctx_stack.top.user = user user_logged_in.send(current_app._get_current_object(), user=_get_user()) return True
ふーん、
session
にいろいろ代入してる。
user_id = getatter...
あたりを読むと、
このモジュールで扱うUser
オブジェクトには、
必ず、id
という名前のメソッドがないとあかんらしい。
ふーん、
user_logged_in.send()
ってなんだろーとおもったら、
blinker
のsignal
というものらしい。
ふーん、
いろいろ難しい。
マニュアル
Blinker Documentation — Blinker
Signals — Flask Documentation (0.10)
Signals (event hooking) — Documentation
参考