我正在寻找有关 WordPress 插件开发的帮助。我的插件查询需要身份验证 token 的 API,该 token 是通过 token 交付 API 获取的。 token 每 3600 秒过期一次。
我想以持久的方式存储 token (对于所有 session ,如服务器端缓存)并仅在需要时更新它。多个 Api 调用可以使用相同的 token 完成。问题是,如果我将 token 存储在全局变量中,每次用户重新加载使用我的插件的页面时,它都会被重置。 https://wordpress.stackexchange.com/questions/89263/how-to-set-and-use-global-variables-or-why-not-to-use-them-at-all
在寻找答案后我发现:
-WP_CACHE ,但它不是持久的。
-我知道我可以将 token 存储在数据库中,但是数据库中的 token 不是我觉得优雅的用例
-Redis Object Cache for PHP 之类的工具,但我发现它真的很复杂,安装等...
有没有什么好的做法或简单的方法可以做到这一点?我只需要将一个字符串保留一个小时并在 PHP 插件中访问它。
谢谢。
最佳答案
在这种情况下,我会使用 WordPress 瞬变:
https://developer.wordpress.org/reference/functions/set_transient/ https://developer.wordpress.org/reference/functions/get_transient/
要设置 transient ,您可以使用此代码:
$transient = 'your_token_name';
$value = 'your_token'
$expiration = 3600
set_transient( $transient, $value, $expiration );
要再次接收 transient 值,您可以使用:
$token = get_transient( $transient );
使用这些方法比 update_option
或 get_option
更好,因为 WordPress 完全管理瞬变的过期(删除),因此您不必为这个。
在将值传递给 transient 方法之前,您可以通过在 wp-config.php
中存储盐/ key 来对其进行加密和解密。您可以在此处找到有关此主题的更多信息:
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;
关于php - WordPress 在内存中存储身份验证 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67980779/