折腾:
【已解决】用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通过秘钥登录
此处:
1 2 3 4 5 6 7 8 | [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
1 2 3 4 | [root@crifan www.crifan.com] # cat .htaccess RewriteEngine on RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] |
再去给wp-config.php加上JWT_AUTH_SECRET_KEY

1 2 3 4 5 | [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:
先看看状态:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [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 ... |
去重启
1 2 3 4 5 6 7 8 | [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
内容是:
1 2 3 | RewriteEngine on RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] |
再去编辑wp-config.php,加上 :
1 | define( 'JWT_AUTH_SECRET_KEY' , 'xxxxxx' ); |
然后重启php
1 | service php-fpm restart |
然后再去生成token
1 2 3 4 5 6 | POST https: //www .yourWebsite.com /wp-json/jwt-auth/v1/token { "username" : "wordpress_username" , "password" : "wordpress_password" } |
返回:
1 2 3 4 5 6 | { "token" : "eyJ0eXAiOxxxxxxxxxxxxHYBhtuzc" , "user_email" : "xxx@yyy.com" , "user_nicename" : "xxx" , "user_display_name" : "xxx" } |
验证token
1 2 3 4 | POST https: //www .crifan.com /wp-json/jwt-auth/v1/token/validate headers: Authorization: Bearer eyJ0exxxxxbXjLYB4 |
返回:
1 2 3 4 5 6 | { "code" : "jwt_auth_valid_token" , "data" : { "status" : 200 } } |
就说明token正常。
转载请注明:在路上 » 【已解决】给crifan.com的WordPress网站REST的API添加JWT的token认证