wp中有nonce ,是wp生成一个唯一的串,功能类似于token,用于url中或者form表单中做验证。
如果我们单纯使用rest-api的话,如果我们使用系统模板中的权限相关的方法,如is_user_logged_in(),current_user_can( 'edit_posts' )等这些方法时,即使当前用户是登当前状态,而且请求头里也有登录信息的 cookie,也不会返回登录的用户信息,这时我们就需要使用专门的用于api的权限校验,这里我们介绍到了
JWT Authentication方式,也就是一个token生成及验证的插件,介绍如下。
- 安装插件并启用
插件地址及文档查看
https://cn.wordpress.org/plugins/jwt-authentication-for-wp-rest-api/
2.在我们的项目根目录下面,[添加]修改.htaccess文件内容,如果没这个文件,直接添加此文件,再添 加内容即可
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
3.修改wp-config.php文件,添加如下内容
define('JWT_AUTH_SECRET_KEY','your-top-secrect-key');
define('JWT_AUTH_CORS_ENABLE',true);
4.添加完我们就可以先获取一个token ,使用账号密码获取token
//获取token接口
http://myweb.com/wp-json/jwt-auth/v1/token
method:POST
body{
username:"admin",
password:"123456"
}
获取内容如下:
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9teXdvcmQuY29tIiwiaWF0IjoxNjI3NjMzNTUyLCJuYmYiOjE2Mjc2MzM1NTIsImV4cCI6MTYyODIzODM1MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.IFMN8goJ2qBj1GRvuRCPYJnYe14Nz8xzfvIv2USVt3Q",
"user_email": "liuguo***@**.com",
"user_nicename": "admin",
"user_display_name": "admin"
}
然后我们要把这个token保存,以后使用别的resp-api时,如果需要权限,就需要把此token放在header 中。
6.header中添加注意key-value值为
header的key为: Authorization
Authorization的值为 Bearer token //Bearer+空格+token
注意
我们重新获取一次token,都会生成一个新的token,但是之前的token依然能用,这可以用来做多端登录。