.. 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 で設定したトークンを指定しています。パラメータは使用しますが、パラメータ値は特に使用しません。
このため適当な値を指定すればよいです。