小程序使用wordpress的Rest API 、JWT 身份验证

官方文档:https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/

下面是在 WordPress 网站上使用 JWT 验证用户身份的主要流程。

申请 Token:用户使用自己在网站上注册的用户名与密码向网站申请 Token。
签发 Token:网站收到请求验证用户名与密码是否匹配,如果匹配,网站就给用户签发一个 JWT 的 Token。
使用 Token:用户收到网站签发的 Token,以后每次向网站发送请求的时候都可以带着这个 Token,网站接收请求,验证 Token 的有效性,并执行用户请求的行为。

一、在wordpress后台安装插件 JWT Authentication for WP-API

二、修改wp-config.php

your-top-secret-key是自己设置的字符串,用于签发token用的

define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');
define('JWT_AUTH_CORS_ENABLE', true);

启用PHP HTTP授权头
默认情况下,大多数共享主机都禁用了HTTP授权头。
要启用此选项,您需要编辑.htaccess文件并添加以下内容

# BEGIN WordPress
 
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
 
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
</IfModule>
 
# END WordPress

配置完成后就可以通过POST方法发送正确的用户名和密码(json格式)签发token了。获取到token之后就可以存cookie或本地缓存里

/wp-json/jwt-auth/v1/token
/wp-json/jwt-auth/v1/token/validate


比如在微信小程序里登陆获取token:

wx.request({
  url:'http://www.url.com/wp-json/jwt-auth/v1/token',
  method:'POST',
  data:{
    username: name,
    password: pwd
  },
  success(res){
    var token = res.data.token;
  }
})

使用API POST时都在header头带上这个token即可

例如在小程序里发布一篇文章

wx.request({
  url:'http://www.url.com/wp-json/wp/v2/posts',
  method:'POST',
  header:{'Authorization':'Bearer' + token},
  data:{
    "title":'发布文章的标题',
    "content":"这是一篇通过REST接口发布的文章内容"
  }
})

发送成功返回201

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索