मुझे समझ में नहीं आया कि क्या आप मुख्य रूप से अपने node.js एप्लिकेशन पर प्रमाणित करना चाहते हैं और फिर वर्डप्रेस या विपरीत के लिए कुकी बनाता है, लेकिन एक बार जब आप समझते हैं कि वर्डप्रेस यह कैसे कर रहा है, तो आप होंगे दोनों को पूरा करने में सक्षम।
सबसे पहले, वर्डप्रेस अपनी कुकीज़ की सुरक्षा के लिए बहुत सारे हैंश और लवण का उपयोग करता है, इसलिए आपको यह पता होना चाहिए कि इन हैंश और लवण आपके लिए नोडजेस एप्लिकेशन के लिए समान मूल्यों को परिभाषित करने में सक्षम हैं।
wp-config.php
पर आप हैश और लवण हम खोज रहे हैं स्थिरांक मिलेगा, मैं तुम्हें सिर्फ अपने NodeJS आवेदन करने के लिए LOGGED_IN_KEY
, LOGGED_IN_SALT
, NONCE_KEY
और NONCE_SALT
के लिए निरंतर मूल्यों के परिवहन के लिए की जरूरत है। आप फ़ाइल wp-includes/default-constants.php
पर एक बेहतर रूप दे सकते हैं जहां वर्डप्रेस अपना डिफ़ॉल्ट निरंतर मान रखता है, अगर (परिभाषित (..)) पर ध्यान दें क्योंकि अगर इस फ़ाइल से पहले कहीं और परिभाषित किया गया है (शायद wp-config.php
पर) मान wp-includes/default-constants.php
फ़ाइल से नहीं होगा।
अब, आपको यह समझने की आवश्यकता है कि वर्डप्रेस अपनी कुकीज़ कैसे बना रहा है। यह कुकी में लॉग इन का एक उदाहरण है:
Cookie Name: wordpress_logged_in_2801795354f6f1c2d2ab3b48033a8257
Cookie Value: admin|1392386298|647852d61caf4cfdea975d54ecb09ca8
Cookie Value: %user_login%|%cookie_expire_time%|%hashed_sliced_user_hashed_password%
आप अपने NodeJS आवेदन इस कुकी को समझते हैं, यह सिर्फ वर्डप्रेस की तरह तोड़ने के लिए सक्षम किया जा रहा बनाने की जरूरत है।
कार्यों पर वर्डप्रेस पर wp-includes/pluggable.php
$logged_in_cookie = wp_generate_auth_cookie($user_id, $expiration, 'logged_in');
//...
setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true);
नोट निरंतर LOGGED_IN_COOKIE
डिफ़ॉल्ट wp-includes/default-constants.php
पर सेट कर दिया जाता है कि, एक ही फाइल आप COOKIEHASH
निरंतर है पर रहता है प्रमाणीकरण कुकी बनाने के लिए, आप के मान के परिवहन के लिए की जरूरत है कि आपके नोडजेस एप्लिकेशन को कुकी नाम को पढ़ने और मान्य करने में सक्षम होने के लिए, COOKIEHASH
केवल वेबसाइट URL md5 के साथ है।
if (!defined('COOKIEHASH')) {
$siteurl = get_site_option('siteurl');
if ($siteurl)
define('COOKIEHASH', md5($siteurl));
else
define('COOKIEHASH', '');
}
//...
define('LOGGED_IN_COOKIE', 'wordpress_logged_in_' . COOKIEHASH);
यदि आप उन सभी को परिवहन नहीं करना चाहते हैं, तो आप बस wp-config पर सेट कर सकते हैं।php अपने NodeJS को सिर्फ इस निरंतर कुकी नाम है कि आप WordPress के लिए चाहते हैं और चित्र में लॉग इन किया है, इस तरह के साथ LOGGED_IN_COOKIE
निरंतर:
//WordPress wp-config.php
define('LOGGED_IN_COOKIE', 'logged_in_'.'%privateHashKey%');
//NODEJS
var LOGGED_IN_COOKIE = 'logged_in_'+'%privateHashKey%';
और अंत में आप चित्र को कार्यों wp_generate_auth_cookie
, wp_hash
और hash_hmac की आवश्यकता होगी to your nodejs application if you want to create the cookie there, the first two functions reside on the file
wp-inclues/pluggable.php the
हैश_मैक resides on
wp-include/compat.php`।
if (!function_exists('wp_generate_auth_cookie')) :
//...
function wp_generate_auth_cookie($user_id, $expiration, $scheme = 'auth') {
$user = get_userdata($user_id);
$pass_frag = substr($user->user_pass, 8, 4);
$key = wp_hash($user->user_login . $pass_frag . '|' . $expiration, $scheme);
$hash = hash_hmac('md5', $user->user_login . '|' . $expiration, $key);
$cookie = $user->user_login . '|' . $expiration . '|' . $hash;
return apply_filters('auth_cookie', $cookie, $user_id, $expiration, $scheme);
}
endif;
एक बार जब आप समझते हैं wp_generate_auth_cookie
समारोह क्या कर रहा है, तो आप भी कुकी को डिकोड करने और अपने NodeJS आवेदन पर वर्डप्रेस उपयोगकर्ता को प्रमाणित करने में सक्षम हो जाएगा।
ध्यान दें कि लॉग इन कुकी मूल्य के लिए वर्डप्रेस क्या कर रहा है, बस उपयोगकर्ता के लिए अपने पासवर्ड पर उपयोगकर्ता के लिए हैश किए गए पासवर्ड को टुकड़ा कर रहा है, उपयोगकर्ता लॉगिन नाम और समाप्ति समय (यूनिक्स टाइम) के साथ विलय कर रहा है, और सभी एक साथ हैशिंग। फिर वह उपयोगकर्ता लॉगिन नाम के साथ कुकी मूल्य बनाता है, कुकी के लिए समाप्ति समय और हैश जिसे उसने अभी बनाया है, पहले दो मानों के साथ वह उपयोगकर्ता से हैंश किए गए पासवर्ड के साथ "टोकन हैश" को सत्यापित कर सकता है।
आप शायद यह जानना चाहें कि वर्डप्रेस पर किसी उपयोगकर्ता को लॉगआउट करने के लिए आपको लॉगआउट यूआरएल पर उपयोगकर्ता के लिए गैर-कुंजी कुंजी पारित करने की आवश्यकता है, इसलिए यदि आप अपने नोडजेस एप्लिकेशन द्वारा वर्डप्रेस से किसी उपयोगकर्ता को लॉगआउट करना चाहते हैं, तो हो सकता है कि आप गैर महत्वपूर्ण कार्यों को परिवहन।
यदि आपका आवेदन उप डोमेन में होगा, तो आप wp-config.php
पर घोषित करना चाहेंगे, या वर्डप्रेस केवल कुकी पर पूर्ण डोमेन का उपयोग करेगा, और कुकी सबडोमेन के लिए उपलब्ध नहीं होगी।
define('COOKIE_DOMAIN', '.domain.com');
आशा है कि यह आपको बेहतर दिशा दे। सौभाग्य।
यदि आपके पास सीएमएस जैसे वर्डप्रेस और जूमला के बीच विकल्प है, तो एक [नोडजेस-जूमला] (https://github.com/jlleblanc/nodejs-joomla) मॉड्यूल है जो जूमला के बीच साझा सत्र बनाता है और नोड काफी आसान है। – alreadytaken