3 分钟阅读时间 (688 字)

使用 Joomla 网络服务(API) - 第 3 部分

May-API

[本文是系列文章的一部分]

5. 如何自动运行任何脚本

鉴于我们的脚本与 Joomla 独立

  • 我们可以把它们放在我们自己的网站上
  • 或者甚至放在另一个服务器上(如果我们信任它的所有者当然,因为能够看到 Token 就意味着是超级用户)

启动任何脚本都可以简单地通过

  • 在浏览器中打开相应的 URL 实现
    • 直接打开
    • 例如,通过后端的一个漂亮的按钮
  • 在代码(PHP 或其他)中调用此 URL
  • 通过设置调用此 URL 的 Cron 作业
    • 通过您的托管商提供的工具(免费)
    • 通过提供在线工具提供 cron 任务的在线工具(通常是付费的)
  • 在 Joomla 中设置任务计划程序

所以显然这意味着您可以在任何时间间隔自动执行创建/更新您的 Joomla 文章。

5.1. 示例 1:通过后端的一个漂亮的按钮

在 Joomla 4 中,在后台创建自定义 HTML 模块变得比以前更容易。

利用此功能为您的用户创建一个漂亮的界面。

5.2. 示例 2:通过 Joomla 任务计划程序

任务计划程序是 Joomla 4 中引入的新功能。

6. 成为唯一可以运行您的脚本的人

如果有人知道您有一个名为例如 api-test.php 的脚本,这个人可能会用对该 URL 的请求淹没您的网站。

在Apache服务器上,避免这种情况的一个典型方法是创建一个.htpsswd文件,这意味着您需要

  • 在您的.htaccess文件中添加几行
  • 添加一个.htpsswd文件,您的.htaccess中的行将引用该文件的正确路径(例如 /YOUR_PATH/public_html/.htpasswd

当启用.htpsswd后,在访问之前会弹出一个提示框要求输入定义的用户名和密码。

通常您可以通过以下方式

但我们需要更具体,因为

  1. 我们只想阻止我们的脚本,而不是整个网站。
  2. 我们只想在浏览器中启动我们的脚本时阻止它们,而不是它们由网站本身启动时
    • 无论是通过某种代码
    • 还是通过任务计划程序

让我们首先展示这样一个.htaccess规则的优秀示例

<FilesMatch "^api*">
AuthType Basic
AuthBasicProvider file
AuthUserFile /YOUR_PATH/public_html/.htpasswd
AuthName secure
<RequireAny>
Require valid-user
Require ip 127.0.0.1 185.221.181.208
</RequireAny>
</FilesMatch>

7. 如有必要,更改API令牌

如果您有任何理由认为您的API密钥不再私密(例如我分享了这个演示之后),那么只需编辑相关的用户,转到Joomla API令牌选项卡并点击重置

  • 旧的令牌被撤销
  • 将显示一个新的密钥,您现在可以将其粘贴到所有脚本中

如果调用具有错误或已撤销令牌的脚本,则将显示以下错误消息:“禁止”

7.1. 我们如何将规则限制在我们的脚本上

假设我所有的脚本文件名都以 api开头。

那么我只想让这个.htpsswd提示框要求输入以 api开头的文件。

这就是为什么在下面的.htaccess代码片段中我们有 <FilesMatch "^api*">

7.2. 我们如何允许由网站本身启动的脚本

查看以下行 Require ip 127.0.0.1 185.221.181.208

  • 127.0.0.1对应于本地主机。在某些情况下,这已经足够
  • 然而,在我的情况下,当用Joomla的任务计划程序启动我的脚本时,我的脚本被阻止了:我还必须明确允许我的服务器的IP地址
    • 问:我是如何找到我的服务器IP地址的?
    • 答:只需使用任何在线工具检查域名“记录”中提供的IP地址即可,例如 https://www.ns-lookup.io/

7.3. 更多信息

有关此类.htaccess规则更多信息,请参阅 https://httpd.apache.ac.cn/docs/2.4/upgrading.html

一些发表在Joomla社区杂志上的文章代表了作者对特定主题的个人意见或经验,可能与Joomla项目的官方立场不一致

0
我是如何学习Joomla - Alison Meeks
第15届荷兰JoomlaDays!
 

评论

已经注册? 这里登录
尚未发表评论。成为第一个发表评论的人

通过接受,您将访问https://magazine.joomla.net.cn/之外第三方提供的服务