Why JWT authentication
我正在构建一个使用Wordpress作为后端的网站,以及一个React+Redux应用程序作为前端,因此我通过向Wordpress API发出请求来获取前端的所有内容。有些请求(主要是POST请求)必须经过身份验证,这就是我遇到JWT时的情况。
What we need
要在Wordpress中使用JWT身份验证,我们首先需要安装
JWT Authentication for WP REST API 插件。正如插件说明中所述,我们还需要修改一些核心Wordpress文件。特别是:
在中。htaccess文件包含在Wordpress安装的根文件夹中,我们需要添加以下行:
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
在wp配置中。php文件,也包含在Wordpress安装的根文件夹中,我们需要添加以下行:
define(\'JWT_AUTH_SECRET_KEY\', \'your-top-secret-key\'); // Replace \'your-top-secret-key\' with an actual secret key.
define(\'JWT_AUTH_CORS_ENABLE\', true);
Testing to see if JWT is available
为了验证我们现在可以使用JWT,启动Postman并请求Wordpress API的默认“索引”:
http://example.com/wp-json/
一些新端点,如
/jwt-auth/v1
和
/jwt-auth/v1/token
应已添加到API中。如果您可以在对上述请求的响应中找到它们,则意味着JWT现在可用。
Getting the JWT token
让我们暂时停留在Postman中,并向Wordpress API请求一个令牌:
http://example.com/wp-json/jwt-auth/v1/token
响应将包含JWT令牌,这是一个加密密钥,看起来像这样:
EYJ0EXAIIOIJKV1QILCJHBGCIOIJIUZI1NIJ9。Eyjpc3mioijodhrwolwvxc9sb2nhbghvc3q6odg4ofvzm90b3jvb20tbmv4dcisimlhdci6mtuymju5nzq1miwibmijmijoxntiyntk3nduylcjlehaiojelmjmymdidyntisimrhdgeionsidxnlcii6eyjpzci6ijeifx19。hxaaT9iowAX1Xf8RUM42OwbP7QgRNxux8eTtKhWvEUM公司
Making an authenticated request
让我们尝试更改ID为300的帖子的标题,作为使用JWT进行身份验证的请求的示例。
在Postman中,选择POST作为方法并键入以下端点:
http://example.com/wp-json/wp/v2/posts/300
在“授权”选项卡中选择“无授权”,并在“标题”选项卡中添加以下内容:
\'Content-type\': \'application/json\',
\'Authorization\': \'Bearer jwtToken\' // Replace jwtToken with the actual token (the encrypted key above)
最后,在Body选项卡中,选择raw和JSON(应用程序/JSON)选项,然后在选项正下方的编辑器中键入以下内容:
{ "title": "YES! Authenticated requests with JWT work" }
现在您可以点击发送。在response选项卡中查看关于我们请求的帖子的所有数据:标题键的值现在应该是
YES! Authenticated requests with JWT work