wordpress - 使用 WordPress 凭据登录 Flutter
问题描述
我是 Dart 和 WordPress 的初学者,我想要一些关于如何甚至知道以下想法是否可行的想法:
我有一个 WordPress 页面,已经设置了一个用户区域,并且我在 Flutter 中开发了一个应用程序,我只希望我的 WordPress 页面的某些类型的用户可以访问它。所以我想在我的应用程序中实现一个登录页面,使用 WordPress 进行身份验证,这可能吗?任何人都可以向我指出一些可以帮助我实现这一目标的代码或页面的摘录?
谢谢
解决方案
将以下代码添加到您的 WordPress(通过您的(子)主题functions.php
,或者通过创建和启用您自己的插件):
add_action('rest_api_init', 'remoteLogin');
public static function remoteLogin($request = [])
{
register_rest_route('remote-login', 'login', array(
'methods' => 'POST',
'callback' => 'restUserLogin',
));
}
function restUserLogin($request = [])
{
$response = [
'success' => false,
'message' => 'Login failed'
];
$status_code = 403;
$parameters = $request->get_json_params();
$username = sanitize_text_field($parameters['username']);
$password = sanitize_text_field($parameters['password']);
$user = null;
if (!empty($username) && !empty($password)) {
$user = wp_authenticate($username, $password);
}
if ($user instanceof WP_User) {
$response['success'] = true;
$response['message'] = 'Login successful';
$status_code = 200;
}
return new WP_REST_Response($response, $status_code);
}
已创建名为 /remote-login/login 的新 REST 路由(您可以在register_rest_route
调用中将其更改为您喜欢的任何内容)。新创建的 REST 路由也将列在https://YOUR_DOMAIN_HERE/wp-json/上。
接下来,您可以在 Flutter 应用程序中发布用户名和密码,例如:
var url = 'https://YOUR_DOMAIN_HERE/wp-json/remote-login/login';
var body = jsonEncode({ 'username': 'USERNAME', 'password': 'SECRET' });
http.post(url,
headers: {"Content-Type": "application/json"},
body: body
).then((http.Response response) {
final int statusCode = response.statusCode;
if (statusCode == 200) {
// login successful...
在本例中,状态码为 200 或 403。对于 200,登录成功,因此无需查看响应 JSON 的成功部分。
推荐阅读
- memory-management - 如何设置 Dask 分布式内存限制
- outlook - 在 MS Graph API 中获取事件
- c++ - 如何从媒体基础 IMFVideoDisplayControl 翻转/镜像/转换网络摄像头视频?
- docker - 错误层=rpc 写入响应:写入 tcp 127.0.0.1:40000->127.0.0.1:41558:使用关闭的网络连接
- javascript - if else 条件下 localStorage 的 Angular 单元测试
- python - Python调用表达式的被调用者什么时候可以是调用表达式?
- javascript - 在 Vanilla javascript 中呈现所有 DOM 元素后如何加载 javascript?
- python - wxpython 带有整数的 Checklistbox
- iso8583 - 授权、授权建议、授权调整和重新授权有什么区别
- node.js - 使用 Node WKHTMLTOPDF 将页面添加到 PDF