折腾:
【已解决】用Python通过WordPress的REST API发布文章post
期间,后续REST的api的认证方式,还是JWT方便。
还是JWT去认证,每次请求提供个token,比较方便:
插件中搜:JWT Authentication,去安装:
点击启用
竟然没有选项设置??
设置中也没有:
说是要安装:
WP REST API v2.0 (formerly known as WP-API)
不过现在已整合到WordPress中了。
发现自己此处之前有安装过插件:
WP REST API
但是没启用:
去点击启用:
但是依旧没有配置页面去获取到JWT的token啊
JWT Authentication for WP REST API – WordPress plugin | WordPress.org
去看看到底如何使用JWT
需要去:
- 改服务器配置
- 支持Authorization的header
- 改wp-config.php
- 加key:define(‘JWT_AUTH_SECRET_KEY’, ‘your-top-secret-key’);
- 支持CORS:define(‘JWT_AUTH_CORS_ENABLE’, true);
都弄好了,会多出个namespace:/jwt-auth/v1
即:访问https://www.crifan.com/wp-json/可以看到
然后再去写代码,去
POST /jwt-auth/v1/token
加上用户名和密码等参数
得到token
供后续api调用时使用
下面就具体去试试
JWT Authentication for WP REST API – WordPress plugin | WordPress.org
先去服务器端看看是否有这个:
Authorization的header支持
期间去:
【已解决】CentOS7中如何远程SSH通过秘钥登录
此处:
[root@crifan www.crifan.com]# pwd /data/wwwroot/www.crifan.com [root@crifan www.crifan.com]# ls -lha 总用量 2.0M drwxr-xr-x 12 www www 4.0K 3月 3 20:12 . drwxr-xr-x 5 root root 4.0K 5月 24 2019 .. -rwxr-xr-x 1 www www 613 6月 14 2017 400.shtml ...
是没看到有.htaccess文件
centos WordPress add Authorization
[root@crifan www.crifan.com]# cat .htaccess RewriteEngine on RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
再去给wp-config.php加上JWT_AUTH_SECRET_KEY
[root@crifan www.crifan.com]# cat wp-config.php ... //define('WP_ALLOW_REPAIR', true); define('JWT_AUTH_SECRET_KEY', 'xxxxxxx');
去确认此处已安装:
wp-api-jwt-auth
已安装:JWT Authentication for WP-API
且已启用
点击 查看详情 可以看到就是:
前面看到的那个:
重复服务器中的php:
先看看状态:
[root@crifan www.crifan.com]# service php-fpm status Redirecting to /bin/systemctl status php-fpm.service ● php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since 一 2019-11-25 13:53:38 CST; 3 months 11 days ago Docs: http://php.net/docs.php Main PID: 4924 (php-fpm) CGroup: /system.slice/php-fpm.service ├─ 1312 php-fpm: pool www ├─ 1912 php-fpm: pool www ├─ 4048 php-fpm: pool www ├─ 4176 php-fpm: pool www ├─ 4924 php-fpm: master process (/usr/local/php/etc/php-fpm.conf) ├─ 5176 php-fpm: pool www ...
去重启
[root@crifan www.crifan.com]# service php-fpm restart Redirecting to /bin/systemctl restart php-fpm.service [root@crifan www.crifan.com]# service php-fpm status Redirecting to /bin/systemctl status php-fpm.service ● php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since 五 2020-03-06 21:51:44 CST; 9s ago ...
重启好了。
然后去:
【已解决】WordPress的jwt-auth用Postman去测试生成token和验证token
【总结】
至此貌似就已经创建好了jwt的token。供后续使用了。
此处安装和启用插件:
JWT Authentication for WP REST API – WordPress plugin | WordPress.org
然后去给WordPress所在CentOS服务器中
WordPress根目录中添加:
.htaccess
内容是:
RewriteEngine on RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
再去编辑wp-config.php,加上 :
define('JWT_AUTH_SECRET_KEY', 'xxxxxx');
然后重启php
service php-fpm restart
然后再去生成token
POST https://www.yourWebsite.com/wp-json/jwt-auth/v1/token { "username": "wordpress_username", "password": "wordpress_password" }
返回:
{ "token": "eyJ0eXAiOxxxxxxxxxxxxHYBhtuzc", "user_email": "[email protected]", "user_nicename": "xxx", "user_display_name": "xxx" }
验证token
POST https://www.crifan.com/wp-json/jwt-auth/v1/token/validate headers: Authorization: Bearer eyJ0exxxxxbXjLYB4
返回:
{ "code": "jwt_auth_valid_token", "data": { "status": 200 } }
就说明token正常。
转载请注明:在路上 » 【已解决】给crifan.com的WordPress网站REST的API添加JWT的token认证