如何使用 JWT 和 flutter_wordpress 包在 Flutter 应用程序中验证 WordPress 非管理员用户?

Posted

技术标签:

【中文标题】如何使用 JWT 和 flutter_wordpress 包在 Flutter 应用程序中验证 WordPress 非管理员用户?【英文标题】:How do I authenticate WordPress non-admin users in a flutter app with JWT and flutter_wordpress package? 【发布时间】:2020-06-04 05:47:41 【问题描述】:

我是 Flutter 的新手,我正在 Flutter 中为以前存在的 WordPress 会员网站构建一个应用程序。

目前我正在使用 WordPress 网站上的 flutter_wordpress 0.1.4 包和“JWT Authentication for WP REST API”插件来尝试对用户(成员)进行身份验证。 (https://pub.dev/packages/flutter_wordpress 和https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/)

问题是我在验证非管理员用户时遇到错误:

flutter: Failed to fetch user: WordPress Error! code: wp_empty_list, message: No users found, status: null

即使我使用管理员帐户,我也没有获得令牌或除名称和 ID 之外的任何用户信息。

这是我的登录屏幕的颤振代码:

import 'package:flutter_wordpress/flutter_wordpress.dart' as wp;
import 'package:flutter/material.dart';

class SignUpScreen extends StatefulWidget 
 static const id = 'sign_up_screen';

 @override
 _SignUpScreenState createState() => _SignUpScreenState();


class _SignUpScreenState extends State<SignUpScreen> 
 static final wp.WordPress wordPress = wp.WordPress(
   baseUrl: 'https://example.com',
   authenticator: wp.WordPressAuthenticator.JWT,
   adminName: '',
   adminKey: '',
 );

 void authUser(userName, password) 
   Future<wp.User> response = wordPress.authenticateUser(
     username: userName,
     password: password,
   );
   response.then((user) 
     print(user);
   ).catchError((err) 
     print('Failed to fetch user: $err');
   );
 

请注意,如果我使用 Postman 将用户名和密码发布到 /wp-json/jwt-auth/v1/token 端点,则响应会给出 tokenuser_emailuser_nicenameuser_display_name,即使对于非管理员也是如此在 WordPress 网站上正确设置,因为这是正确的响应。

编辑:另外,我忘了说我发现这个 Stack Overflow 帖子非常相关:Can not authenticate a user who is not an administrator 但问题是我不明白这部分是什么意思——“允许每个人在你的 server/jwt 配置中访问 /wp-json/wp/v2/users 将解决它。”

【问题讨论】:

【参考方案1】:

你得到的错误:

flutter: Failed to fetch user: WordPress Error! code: wp_empty_list, message: No users found, status: null

是由于 WordPress API 默认情况下仅显示带有帖子的用户列表,并且要解决此问题,请在此处的线程上执行给出的答案: https://wordpress.stackexchange.com/questions/301068/wp-rest-api-only-returning-partial-list-of-users

【讨论】:

以上是关于如何使用 JWT 和 flutter_wordpress 包在 Flutter 应用程序中验证 WordPress 非管理员用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JWT 和 Kubernetes 设置 Spring 后端

如何使用 JWT 和 Passport 正确使用 nodeJs API 的身份验证?

如何使用 RestSharp 使用 JWT 访问令牌和用户声明

Yii2项目中如何使用JWT?

jwt令牌过期后如何注销

ID令牌和访问令牌有啥区别,以及如何使用JWT实现它们?