当前位置:代码狗 > WordPress > WP建站 > 正文

JWT Authentication插件为WordPress REST API验证用户权限

WordPress作为全球使用量最大建站程序,不仅可以用来搭建web网站,还能提供诸多api实现客户端功能,以方便接入安卓APP、iOS应用、微信小程序等等应用场景。WordPress官方也提供了安卓APP版本的客户端应用,以便站长管理自己的网站内容。WordPress官方提供了WordPress REST API读写WordPress网站,与web端不同它将返回json数据,而不是传统的HTML数据,我们可以使用这些WordPress REST API来实现我们的客户端应用。

但是,WordPress REST API并没有完整的用户鉴权功能,为了提供用户登录注册能力,我们可以使用JWT Authentication插件来为WordPress REST API验证用户权限。当然,你也可以根据WordPress REST API自己写鉴权接口,不必使用JWT Authentication插件。

JWT Authentication插件使用

WordPress后台插件搜索即可安装,或者通过WordPress插件官网搜索下载安装。

安装好之后你需要对JWT Authentication插件进行配置。

编辑wp-config.php文件,加入如下代码,设置鉴权时使用的加密秘钥。

define('JWT_AUTH_SECRET_KEY', '你的加密秘钥字符串');

跨域支持

如果你的客户端需要跨域请求WordPress,那么你需要在wp-config.php文件中添加如下跨域配置。

define('JWT_AUTH_CORS_ENABLE', true);

到此JWT Authentication插件安装完毕,该插件只是对WordPress REST API进行补充,所以你的WordPress REST API多了两个接口,分别是获取权限和鉴定权限的接口。

  • /wp-json/jwt-auth/v1/token: 用于验证用户名、密码,并返回 Token
  • /wp-json/jwt-auth/v1/token/validate:用于验证 Token 是否正确

简单测试

使用postman软件发送一个用户登录的post数据,测试服务器响应。

请求地址:你的域名/wp-json/jwt-auth/v1/token

请求值:用户信息,如下图所示。

JWT Authentication插件为WordPress REST API验证用户权限

JWT Authentication插件为WordPress REST API验证用户权限

关于鉴权

如上图获取到登录用户的token令牌后,后续需要权限的操作中只需要在请求头上携带token值,JWT Authentication插件将会对每次请求进行鉴权处理!

简单使用

以获取当前登录用户信息为例

请求地址:域名/wp-json/wp/v2/users/me

请求值:空

额外请求头部:Authorization=Bearer+上面的token值

结果如下图

JWT Authentication插件为WordPress REST API验证用户权限

JWT Authentication插件为WordPress REST API验证用户权限

成功得到用户信息,失败将返回错误信息json数据。

感觉很棒!可以赞赏支持我哟~

赞(1) 打赏

评论 18

  1. #4

    {
    “code”: “rest_cannot_create”,
    “message”: “抱歉,您不能作为此用户创建文章。”,
    “data”: {
    “status”: 401
    }
    }

    小麦之神4个月前 (05-29)回复
    • 没登录

      代码狗4个月前 (05-29)回复
      • 什么意思啊?我是用我的管理员的账号去测试的啊

        小麦之神4个月前 (05-29)
      • 那你拿到token没有

        代码狗4个月前 (05-29)
      • 拿到了,你这不能上传图片

        小麦之神4个月前 (05-29)
      • 邮件聊

        代码狗4个月前 (05-29)
      • {
        “token”: “eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvd3d3Lmp0bWFjLmNuIiwiaWF0IjoxNTU5MTMxNjA2LCJuYmYiOjE1NTkxMzE2MDYsImV4cCI6MTU1OTczNjQwNiwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.v2DkC1-zJ6v4EB247yzvz5t-cUK3foBJaUQITr0CbRg”,
        “user_email”: “3290323316@qq.com”,
        “user_nicename”: “admin”,
        “user_display_name”: “admin”,
        “user_caps”: {
        “administrator”: true
        },
        “user_avatar”: “https://secure.gravatar.com/avatar/a92b673d84bbec51b62ceb683094a67c?s=96&d=mm&r=g”
        }

        小麦之神4个月前 (05-29)
      • 你域名多少呀,哪个接口出现的问题?

        代码狗4个月前 (05-29)
      • 已发邮件

        小麦之神4个月前 (05-29)
  2. #3

    {
    “code”: “rest_user_invalid_id”,
    “message”: “用户ID无效。”,
    “data”: {
    “status”: 404
    }
    }
    你好,出现这个现象是怎么回事呢?一直卡到这里

    小麦之神4个月前 (05-29)回复
    • 拿到登录令牌Token后,每次请求需要权限的api都需要在header中携带!

      代码狗4个月前 (05-29)回复
  3. #2

    意义何在,直接在API响应代码里判断当前用户权限不更好?

    店小二4个月前 (05-11)回复
    • WordPress的rest api没有登陆授权接口,要自己实现。

      代码狗4个月前 (05-12)回复
      • 自己注册一个不就行了。。。。

        万能的wordpress4个月前 (05-13)
      • register_rest_route 自己搞一个,post过来的数据,处理好,返回数组就行了。我正在开发我网站,不单注册登录,发文这些用的api,连界面响应都是用return html代码来实现的

        万能的wordpress4个月前 (05-13)
      • 自己注册规则也是可以,我看了rest api就是这样做的,搞起来太麻烦了,我比较懒····先学学怎么用,再学自定义吧。

        代码狗4个月前 (05-13)
  4. #1

    我用的那个小程序账号是直接弄的微信号,没给开网站账号系统。

    奶爸de笔记4个月前 (05-10)回复
    • 那是因为你的站没有付费项目

      代码狗4个月前 (05-10)回复
×

请作者吃根烤肠!

支付宝