WordPress JWT认证授权方式测试调研和开发心得

本文接上回WordPress OAuth 1.0认证方式测试调研,研究JWT认证方式。

JWT,全称JSON Web Token。在WordPress应用场景中,客户端通过JSON格式发送登录信息到WordPress网站,网站返回用户的基本信息,附带一串token给客户端;客户端在下次请求写入数据的时候,在请求头上戴上这一串token作为用户标识就可以了。由于token是从网站发来的,客户端不需要做任何的数据处理,只要存储一下这一串token就可以了,很便捷。因为这种便捷性,国内用微信小程序或其他客户端连接WordPress的项目,大部分都是用JWT实现的,如果我说的不对请留言指正:)

使用JWT,先安装插件:JWT Authentication for WP REST API

然后在WP的根目录下修改wp-config.php,增加以下两行配置,开启JWT接口:
define('JWT_AUTH_SECRET_KEY', 'abcdefg...'); //填个复杂点随机字符串
define('JWT_AUTH_CORS_ENABLE', true);

以上准备工作完成,接下来回到Postman测试发送请求。

1. 发送用户名和密码的JSON格式到 https://www.mysite.com/wp-json/jwt-auth/v1/token

返回数据中,除了邮箱、用户名和全名外,注意第一行的token,需要在客户端存储一下,安全起见,推荐存在客户端的后端,尽量不放在前端。

2. 把token写入请求Headers里,格式如下,注意Bearer后面加空格,再跟token的值。
Authorization: Bearer [token]
请求的body为空
发POST请求到https://www.mysite.com/wp-json/jwt-auth/v1/token/validate 节点

得到200状态码的反馈,即表示认证有效。注意此token的有效期为一天。前端需在24小时内验证一下token,一旦失效,就要回到步骤1重新申请。

3. 正式测试通过常规REST API接口删除一篇文章,注意带上刚刚的Header

文章顺利删除,测试成功。

实际开发的时候,插件提供了一个很实用的钩子 – jwt_auth_token_before_dispatch,可以在返回token的同时带上更多的用户信息,用法如下:

add_filter('jwt_auth_token_before_dispatch', 'brain1981_add_user_info_jwt', 10, 2);
function brain1981_add_user_info_jwt($response, $user) {
	//返回用户ID
	$response['user_id'] = $user->ID;
	//返回用户自定义字段
	$response['user_meta_name'] = get_user_meta($user->ID , 'user_meta_name');
	//返回用户角色
	$response['user_roles'] = implode(',', $user->roles);
	return $response;
}

结束收工。

本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.brain1981.com/2325.html。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

关注我们的微信公众号-JennyStudio 本站记录了近几年的工作中遇到的一些技术问题和解决过程,“作品集”还收录了本人的大部分作品展示。除了本博客外,我们的工作室网站 – JennyStudio,内有更多作品回顾和展示。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。

2 关于 “WordPress JWT认证授权方式测试调研和开发心得” 的评论

  1. 野人

    写的很详细。
    不过,现在JWT Authentication for WP REST API插件中的token失效时间是7天哦。
    如想实现,自定义失效时间,可以通过【jwt_auth_expire】这个钩子来修改哦。
    最后,还是要感谢博主的分享。

    回复

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注