wp中有nonce ,是wp生成一個唯一的串,功能類似于token,用于url中或者form表單中做驗證。
如果我們單純使用rest-api的話,如果我們使用系統(tǒng)模板中的權(quán)限相關(guān)的方法,如is_user_logged_in(),current_user_can( 'edit_posts' )等這些方法時,即使當(dāng)前用戶是登當(dāng)前狀態(tài),而且請求頭里也有登錄信息的 cookie,也不會返回登錄的用戶信息,這時我們就需要使用專門的用于api的權(quán)限校驗,這里我們介紹到了
JWT Authentication方式,也就是一個token生成及驗證的插件,介紹如下。
- 安裝插件并啟用
插件地址及文檔查看
https://cn.wordpress.org/plugins/jwt-authentication-for-wp-rest-api/
2.在我們的項目根目錄下面,[添加]修改.htaccess文件內(nèi)容,如果沒這個文件,直接添加此文件,再添 加內(nèi)容即可
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
3.修改wp-config.php文件,添加如下內(nèi)容
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"
}
獲取內(nèi)容如下:
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9teXdvcmQuY29tIiwiaWF0IjoxNjI3NjMzNTUyLCJuYmYiOjE2Mjc2MzM1NTIsImV4cCI6MTYyODIzODM1MiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.IFMN8goJ2qBj1GRvuRCPYJnYe14Nz8xzfvIv2USVt3Q",
"user_email": "liuguo***@**.com",
"user_nicename": "admin",
"user_display_name": "admin"
}
然后我們要把這個token保存,以后使用別的resp-api時,如果需要權(quán)限,就需要把此token放在header 中。
6.header中添加注意key-value值為
header的key為: Authorization
Authorization的值為 Bearer token //Bearer+空格+token
注意
我們重新獲取一次token,都會生成一個新的token,但是之前的token依然能用,這可以用來做多端登錄。