web2py version: 1.99.4
2.3. 拡張ログインフォーム¶
認証方式によってデフォルトのログインフォームを使用するもの、専用のログインフォームを使用するものがあります。専用ログインフォームを使用する認証方式は、通常では他の認証方式とは共存できません。
しかし拡張ログインフォームを使用することにより、専用ログインフォームとデフォルトのログインフォームを同時に使用することが可能になります。
各認証方式が専用ログインフォームを使用するかどうかは、 各認証方式での挙動の違い を参照ください。
2.3.1. 設定¶
モデル定義(db.pyなど)にて、 login_form
に ExtendedLoginForm
インスタンスを設定します。
設定例
from gluon.contrib.login_methods.extended_login_form import ExtendedLoginForm
auth.settings.login_form = ExtendedLoginForm(auth, other_form)
第二パラメータ(other_formのところ)には、専用ログインフォームで使用する認証方式のインスタンスを指定します。
2.3.2. 拡張ログインフォームクラス¶
拡張ログインフォームクラスのコンストラクタのパラメータについて説明します。
- class
extended_login_form.
ExtendedLoginForm
(auth, alt_login_form[, signals, login_arg])¶
- auth
Auth
インスタンスを指定します。- alt_login_form
- 専用ログインフォームを使用する認証方式のインスタンスを指定します。
- signals
- トークン設定します。URLパラメータに設定トークンが含まれる場合、デフォルトのログインフォームを非表示にします。 デフォルトは [] (空値)です。
- login_arg
- 特に使用していないようです。デフォルトは ‘login’ です。
2.3.3. 使用例¶
Janrain Engage を指定した例を示します。
使用例(Janrain Engage)
from gluon.contrib.login_methods.rpx_account import RPXAccount
other_form = RPXAccount(request,
api_key='...',
domain='...',
url = "http://%s/%s/default/user/login" \
% (request.env.http_host, request.application))
from gluon.contrib.login_methods.extended_login_form import ExtendedLoginForm
auth.settings.login_form = ExtendedLoginForm(auth, other_form)
この設定によるログイン画面は次のようになります。
次にトークンを使用した設定例を示します。
使用例(Janrain Engageとトークン)
from gluon.contrib.login_methods.rpx_account import RPXAccount
other_form = RPXAccount(request,
api_key='...',
domain='...',
url = "http://%s/%s/default/user/login" \
% (request.env.http_host, request.application))
from gluon.contrib.login_methods.extended_login_form import ExtendedLoginForm
auth.settings.login_form = ExtendedLoginForm(auth, other_form, signals=['token1'])
‘token1’ というトークンを signal パラメータに設定しています。 URLパラメータに該当するトークンの指定がある場合、デフォルトログインフォームを非表示にします。
右図はパラメータに signals で設定したトークンを指定しています。パラメータは使用しますが、パラメータ値は特に使用しません。 このため適当な値を指定すればよいです。