如果它是定制的(单个项目使用),则操作 ID 在安装时永远不会更改,因此您可以在移动应用程序中对其进行硬编码?
否则,您将需要调用来检索操作 ID,有 2 种方式浮现在脑海中:
创建一个标签输出函数,并让它将 Action ID 输出到模板中,然后您可以向返回 Action ID 的移动开发人员提供特定的 URL。
为特定的 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 对象)传回,然后移动登录可以使用除了 Action 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,而是表单是由有效来源而不是黑客发布的!
进一步澄清
假设移动开发团队正在处理登录问题。他们需要一个包含用户名和密码输入的表单,他们还需要 2 个隐藏字段,1 个用于 XID(安全检查),1 个用于 ACT。并且表单将被提交到网站的根目录(例如 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 和 ACT 包含在他们创建的表单中。
您不需要另一个附加组件来捕获实际登录的新操作,因为 EE 会为您完成。