我正在尝试将系统数据库中的用户身份验证到wordpress数据库中。这两个数据库都有用户记录,因为我的注册表https://domain.tld/office/register 记录两个数据库中的用户。我正在使用woocommerce api来实现这一点,但这个api没有提到如何让用户登录。
我有两个系统,都使用相同的域,只是路径不同。woocommerce的Wordpress(均为最新版本):https://domain.tld/store/我的系统:https://domain.tld/office/
我的登录表单如下:https://domain.tld/office/login (在我的情况下,使用WP登录表单不是一个选项)
这是我在登录过程中尝试过的,但没有成功
require \'/var/www/store/wp-includes/user.php\';
$credentials = array();
$credentials[\'user_login\'] = $_POST[\'username\'];
$credentials[\'user_password\'] = $_POST[\'password\'];
$credentials[\'remember\'] = true;
$autologin_user = wp_signon( $credentials, is_ssl() );
以及
$url_wp = \'https://domain.tld/store/\';
//$postdata = "log=" . $username . "&pwd=" . $password . "&wp-submit=Log%20In&redirect_to=" . $url_wp . "wp-admin/&testcookie=1";
$postdata = "log=" . $username . "&pwd=" . $password . "&wp-submit=Log%20In&redirect_to=" . $url_wp;
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url_wp . "wp-login.php");
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt ($ch, CURLOPT_REFERER, $url_wp . "wp-login.php");
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
我还使用了插件“jwt authentication for wp rest api”,下面是获取令牌的代码(正如预期的那样工作),但同样不知道在何处使用此cookie发送请求。
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://domain.tld/store/wp-json/jwt-auth/v1/token?username=ambro&password=123456789012345",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
// get the token and other data
$wp_api_response = json_decode($response, true);
// $wp_api_response[\'token\'];
// $wp_api_response[\'user_email\'];
// $wp_api_response[\'user_nicename\'];
// $wp_api_response[\'user_display_name\'];
// with the token now we need to send a request to login
// "Authorization: Bearer ".$wp_api_response[\'token\']
// "Authorization: Bearer " . $wp_api_response[\'user_display_name\'].$wp_api_response[\'token\']
// store the token in a cookie
setcookie(
\'office_wp_auth\',
$wp_api_response[\'token\'], // cookie value
time() + (86400 * 30), // 30 days
\'/\', // the cookie will be available within the entire domain.
\'\',
TRUE, // Only send cookie over HTTPS, never unencrypted HTTP
TRUE // Don\'t expose the cookie to JavaScript
);
这背后的基本思想是,我的用户需要一家商店来购买物品,而当前的“商店”并不是一个完整的电子商务应用程序。我不是在研究插件开发或诸如此类的事情,只是需要我的用户在通过办公室登录时登录woocommerce商店。
我不知道如何完成这项任务,这似乎是一项非常简单的任务,但我看不到全局。
有什么想法吗?
当做