0

ユーザーがモバイルアプリからログインできるようにするモジュールを式エンジンで構築しようとしています。

以前にチャネル エントリのような EE API を使用したことがありますが、これは初めてのことです。

「Userapi」というモジュール クラスと「login_user」メソッドを作成し、これに対するアクションをアクション テーブルに登録する予定です。「25」という ID を取得し、「 http://mydomain.com/index.php?ACT=25 」という URL を使用すると、問題なく動作します。

問題は、モバイル開発チームがモジュールをインストールし、ログイン機能のアクション ID をどのように知るかです。データベースにアクセスしてチェックするべきではありません。それらにそのアクションIDを提供する必要があるいくつかの方法があるはずですが、私はその方法を理解できませんか?

助けてください。より良いアプローチがあれば、それを実装したいと思います。

Peterの回答後に更新:

私は少し混乱しています。フォーム (ログイン/登録) はモバイル アプリにあります。フォームは、EE プラグインが投稿データを処理し、ユーザーをログインまたは登録することになっている式エンジンの URL にデータを投稿します。

このシナリオでは、最も適切なアプローチは何ですか。URL は http であるため、安全でないプロトコルでもあります。

ありがとう

4

1 に答える 1

0

オーダーメイド (単一プロジェクト使用) の場合、アクション ID はインストール時に変更されないため、モバイル アプリでハード コードできますか?

それ以外の場合は、アクション ID を取得するために呼び出しが必要になります。次の 2 つの方法が考えられます。

  1. タグ出力関数を作成し、アクション ID をテンプレートに出力させると、アクション ID を返す特定の URL をモバイル開発者に提供できます。

  2. 特定の URL またはクエリの session_end をリッスンする拡張機能を作成します。関連するリクエストをインターセプトして返すことができます: http://ellislab.com/expressionengine/user-guide/development/extension_hooks/global/session/index.html

両方のアプローチのアクション ID を取得するには:

$actionID = $this->EE->functions->fetch_action_id(__CLASS__, 'login_user');

安全なフォームの利用を検討することをお勧めします。この同じコードを取得して XID を生成し、同じリクエスト (おそらく JSON オブジェクト) で返すことができます。モバイル ログインは、セキュリティを向上させるためにアクション ID に加えてこれを利用できます。 .

$this->EE->functions->form_declaration($formDetails)

参照: http://ellislab.com/expressionengine/user-guide/development/reference/functions.html#form-declaration-data-array また: http://ellislab.com/expressionengine/user-guide/development/guidelines /security.html#id13

また、追加のログイン/登録レイヤーを気にせず、同じ方法でシミュレートできる既存のネイティブ EE ログイン/登録を利用することも検討してください。

既存の登録を使用する例: http://www.sidd3.com/stand-alone-member-registration-form-in-expressionengine/

ノート:

$actionID = $this->EE->functions->fetch_action_id('Member', 'register_member');

ログインについても同様のものがあります。

$actionID = $this->EE->functions->fetch_action_id('Member', 'member_login');

メンバーのログアウト:

$actionID = $this->EE->functions->fetch_action_id('Member', 'member_logout');

更新

セキュアとは https を意味するのではなく、フォームがハッカーではなく有効なソースによって投稿されたことを意味します。

さらなる解明

モバイル開発チームがログインに取り組んでいるとしましょう。ユーザー名とパスワードを入力するフォームが必要です。また、XID (セキュリティ チェック) 用と ACT 用の 2 つの非表示フィールドも必要です。フォームは Web サイトのルート (例: www.mydomain.com) に送信されます。

作成する必要があるのは、隠しフィールド (または値) を生成するプラグインだけです。このプラグインは、次のことができます。

$actionID = $this->EE->functions->fetch_action_id("Member", 'member_login');
$formDetails = array('action'     => '',
              'name'           => 'mobile-login',
              'id'             => $this->EE->TMPL->form_id,
              'class'          => $this->EE->TMPL->form_class,
              'hidden_fields'  => array('ACT' => $actionID),
              'secure'         => TRUE
);
return $this->EE->functions->form_declaration($formDetails);

「mobile-login」という名前のルート テンプレート グループのテンプレートで使用する場合:

{exp:your_plugin_name form_id="my_id" form_class="my_class"}

これにより、使用されているテンプレートに次のものがレンダリングされます。

<form class="my_class" id="my_id" name="mobile-login" method="post" action="http://www.my-domain.com"> 
    <div class="hiddenFields">
        <input type="hidden" name="XID" value="8b13dcd4afa21fe00065319e92a53d8e72a4f687">
        <input type="hidden" name="ACT" value="15">
        <input type="hidden" name="site_id" value="1"> 
    </div>

したがって、モバイル開発者は、そのまま使用するか、XID を取り出して、作成したフォームに含めることができます。

EE が自動的に実行するため、実際のログイン用に新しい ACtion を取得するために別のアドオンは必要ありません。

于 2013-06-01T15:08:42.460 に答える