5ucms论坛

标题: 小程序使用wordpress的Rest API 、JWT 身份验证 [打印本页]

作者: admin    时间: 2021-5-29 17:03
标题: 小程序使用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用的

  1. define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');
  2. define('JWT_AUTH_CORS_ENABLE', true);
复制代码

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

# BEGIN WordPress

  1. SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
  2. <IfModule mod_rewrite.c>
  3. RewriteEngine On
  4. RewriteBase /
  5. RewriteRule ^index\.php$ - [L]
  6. RewriteCond %{REQUEST_FILENAME} !-f
  7. RewriteCond %{REQUEST_FILENAME} !-d
  8. RewriteRule . /index.php [L]

  9. RewriteCond %{HTTP:Authorization} ^(.*)
  10. RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
  11. </IfModule>
复制代码


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

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

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

  1. wx.request({
  2.   url:'http://www.url.com/wp-json/jwt-auth/v1/token',
  3.   method:'POST',
  4.   data:{
  5.     username: name,
  6.     password: pwd
  7.   },
  8.   success(res){
  9.     var token = res.data.token;
  10.   }
  11. })
复制代码

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

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

  1. wx.request({
  2.   url:'http://www.url.com/wp-json/wp/v2/posts',
  3.   method:'POST',
  4.   header:{'Authorization':'Bearer' + token},
  5.   data:{
  6.     "title":'发布文章的标题',
  7.     "content":"这是一篇通过REST接口发布的文章内容"
  8.   }
  9. })
复制代码

发送成功返回201
作者: admin    时间: 2021-5-29 17:03
此方法是独立登录,和小程序里的微信登录不是一回事哈
但可以结合下,用来实现发贴功能




欢迎光临 5ucms论坛 (http://bbs.5ucms.com/) Powered by Discuz! X3.2