WordPress 在内存中存储身份验证令牌

时间:2021-06-15 05:59:30

标签: php wordpress caching woocommerce server

我正在寻找有关 WordPress 插件开发的帮助。我的插件查询需要身份验证令牌的 API,该令牌是通过令牌交付 API 获取的。令牌每 3600 秒过期一次。

我想以持久的方式存储令牌(对于所有会话,如服务器端缓存)并仅在需要时更新它。可以使用相同的令牌完成多个 Api 调用。问题是,如果我将令牌存储在全局变量中,每次用户重新加载使用我的插件的页面时它都会被重置。 https://wordpress.stackexchange.com/questions/89263/how-to-set-and-use-global-variables-or-why-not-to-use-them-at-all

在寻找答案后我发现:

-WP_CACHE ,但它不是持久的。

-我知道我可以将令牌存储在数据库中,但是数据库中的令牌不是我认为优雅的用例

-诸如用于 PHP 的 Redis 对象缓存之类的工具,但我发现它非常复杂,安装等...

是否有任何好的做法或简单的方法来做到这一点?我只需要将一个字符串保留一个小时,然后在 PHP 插件中访问它。

谢谢。

https://wordpress.stackexchange.com/questions/89263/how-to-set-and-use-global-variables-or-why-not-to-use-them-at-all

1 个答案:

答案 0 :(得分:2)

在这种情况下,我将使用 WordPress 瞬态:

https://developer.wordpress.org/reference/functions/set_transient/ https://developer.wordpress.org/reference/functions/get_transient/

要设置瞬态,您可以使用以下代码:

$transient  = 'your_token_name';
$value      = 'your_token'
$expiration = 3600

set_transient( $transient, $value, $expiration );

要再次接收瞬态的值,您可以使用:

$token = get_transient( $transient );

使用这些方法比 update_optionget_option 更好,因为 WordPress 完全管理瞬态的过期(删除),因此您不必为此实现自己的逻辑。

在将值传递给瞬态方法之前,您可以通过在 wp-config.php 中存储盐/密钥来对其进行加密和解密。您可以在此处找到有关此主题的更多信息:

http://php.net/manual/es/function.openssl-encrypt.php http://php.net/manual/es/function.openssl-decrypt.php

要在 WordPress 中定义常量,您需要转到 wp-config.php 文件并将其添加到“您可以编辑”字样之间:

define( 'YOUR_SALT', '12345678' );

您可以在 WordPress 中将其作为普通常量再次阅读:

$salt = YOUR_SALT;