|
官方文档: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 |
|