wordpress - WordPress ajax 成功登录但未设置当前用户?
问题描述
function ajax_signon () {
check_ajax_referer('mbx-nonce', 'security');
$user = wp_signon();
if ( is_wp_error($user) ) {
echo json_encode(array(
'userId' => -1,
'loggedIn' => false,
'message' => __('Wrong username or password.')
));
} else {
wp_set_current_user($user->ID);
wp_set_auth_cookie($user->ID);
echo json_encode(array(
'userId' => $user->ID,
'loggedIn' => true,
'message' => __('Login successful')
));
}
exit();
}
add_action('wp_ajax_nopriv_signon', 'ajax_signon');
我有两个站点,第一个在 react 中,第二个在 WordPress 中。我正在尝试使用 WordPress 登录。但两个域是不同的。
解决方案
第一个在您的 $user = wp_signon(); 中设置正确的登录详细信息
像这样:
//$_POST["user_email"] = 'admin';
//$_POST["user_password"] = '123456';
$user_login = esc_attr($_POST["user_email"]);
$user_password = esc_attr($_POST["user_password"]);
$creds = array();
$creds['user_login'] = $user_login;
$creds['user_password'] = $user_password;
$creds['remember'] = true;
$user = wp_signon( $creds, false );
然后设置/使用 wp_signon 进行登录,如下所示:
$user_id = $user->ID;
wp_set_current_user($user_id);
wp_set_auth_cookie($user_id);
其他方法(无需密码直接登录):
设置用户ID,如:
$user_id = $_POST['user_id];
然后
wp_set_current_user($user_id);
wp_set_auth_cookie($user_id);
再换一件事
add_action('wp_ajax_nopriv_signon', 'ajax_signon');
至
add_action('wp_ajax_signon', 'ajax_signon');
add_action('wp_ajax_nopriv_signon', 'ajax_signon');
推荐阅读
- c# - Ngnix 不匹配位置地址
- mysql - MySQL - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法 - phpMyAdmin
- javascript - 如何将基于数组的表单与 FormData 对象一起使用?
- css - 更改禁用材质填充输入的背景
- c# - 首先从文本文件 asp.net Mvc 代码填充数据库
- wordpress - 仅为顶部添加控制部分 - Elementor
- xml - Rust Serde:将 XML 直接反序列化为 Vec
- java - Java 无法自动推断泛型参数
- android - 在 PagerAdapter 中释放资源
- excel - Excel:根据单元格中的确切文本获取值