.. meta:: :keywords: web2py, framework, Access control, アクセス制御, 認証, 拡張ログインフォーム .. raw:: html
web2py version: 1.99.4
.. _ac_extended_login_form: 拡張ログインフォーム ==================== 認証方式によってデフォルトのログインフォームを使用するもの、専用のログインフォームを使用するものがあります。専用ログインフォームを使用する認証方式は、通常では他の認証方式とは共存できません。 しかし拡張ログインフォームを使用することにより、専用ログインフォームとデフォルトのログインフォームを同時に使用することが可能になります。 各認証方式が専用ログインフォームを使用するかどうかは、 :ref:`ac_methods_variance` を参照ください。 設定 ---- モデル定義(db.pyなど)にて、 :attr:`~Auth.settings.login_form` に :class:`~extended_login_form.ExtendedLoginForm` インスタンスを設定します。 設定例 :: from gluon.contrib.login_methods.extended_login_form import ExtendedLoginForm auth.settings.login_form = ExtendedLoginForm(auth, other_form) 第二パラメータ(other_formのところ)には、専用ログインフォームで使用する認証方式のインスタンスを指定します。 拡張ログインフォームクラス -------------------------- 拡張ログインフォームクラスのコンストラクタのパラメータについて説明します。 .. module:: extended_login_form .. class:: ExtendedLoginForm(auth, alt_login_form [, signals, login_arg ]) auth :class:`~tools.Auth` インスタンスを指定します。 alt_login_form 専用ログインフォームを使用する認証方式のインスタンスを指定します。 signals トークン設定します。URLパラメータに設定トークンが含まれる場合、デフォルトのログインフォームを非表示にします。 デフォルトは [] (空値)です。 login_arg 特に使用していないようです。デフォルトは 'login' です。 使用例 ------ 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) この設定によるログイン画面は次のようになります。 .. image:: ../../images/web2py_ac/web2py_ac_017r.PNG :width: 400px :class: img-border 上部にデフォルトのログインフォームが、下部に 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, signals=['token1']) 'token1' というトークンを signal パラメータに設定しています。 URLパラメータに該当するトークンの指定がある場合、デフォルトログインフォームを非表示にします。 .. include:: extended_login_form_diagram.html 右図はパラメータに signals で設定したトークンを指定しています。パラメータは使用しますが、パラメータ値は特に使用しません。 このため適当な値を指定すればよいです。