2015-10-25 11 views
7

Accounts.forgotPassword() और Accounts.sendVerificationEmail() के लिए, एक टोकन उत्पन्न होता है।क्या खाता-पासवर्ड ईमेल टोकन कभी समाप्त हो जाते हैं?

क्या टोकन कभी समाप्त हो जाता है?
यदि हां, तो किस अवधि के बाद?

+0

एक 'सत्यापन टोकन' में एक सृजन टाइमस्टैम्प है लेकिन एक समाप्ति टाइमस्टैम्प afaict नहीं है। मुझे पता है कि सत्यापन टोकन या पासवर्ड रीसेट टोकन केवल एक बार उपयोग किया जा सकता है। –

+0

दिलचस्प - अगर मैं दो बार टोकन का उपयोग करता हूं (फिर से ईमेल लिंक पर क्लिक करें) मुझे यह त्रुटि संदेश मिलता है: "त्रुटि: टोकन समाप्त हो गया [403]" भ्रामक शब्द। – Artfree

+0

माइकल - सत्यापन टोकन निर्माण टाइमस्टैम्प तक पहुंच प्राप्त करना संभव है? यदि ऐसा है, तो मैं अपना खुद का टोकन समाप्ति दिनचर्या बना सकता हूं। धन्यवाद। – Artfree

उत्तर

1

इस समय कोई अंतर्निहित कोड नहीं है जो टोकन की समाप्ति से संबंधित है, न ही समाप्ति समय निर्धारित करता है और न ही इसे लागू करता है।

ईमेल रीसेट डेटा (टोकन, ईमेल और टोकन निर्माण तिथि), उपयोगकर्ता के रिकॉर्ड में सहेजा जाता है के रूप में the source में देखा जा सकता:

var tokenRecord = { 
    token: token, 
    email: email, 
    when: when 
}; 
Meteor.users.update(userId, {$set: { 
    "services.password.reset": tokenRecord 
}}); 

इसलिए, तारीख के बाद मोंगो चयनकर्ता में है:

'services.password.reset.when' 

दुर्भाग्य से, reset डेटा के सभी जैसे ही resetPassword विधि सही टोकन के माध्यम से कहा जाता है सेट नहीं की जाती।

यह validateLoginAttempt कॉलबैक करने के लिए अनुपलब्ध हो जाती हैं:

Accounts.validateLoginAttempt(function(options) { 
    if (options.methodName === 'resetPassword' && options.allowed === true) { 
    console.log('resetPassword', options.user.services.password.reset); //undefined 
    } 
    return true; 
}); 

इसी तरह, ईमेल सत्यापन टोकन user.services.email.verificationTokens है, जो (सेट करता है, तो) टोकन रिकॉर्ड की एक सरणी है में संग्रहित है।

दिनांकों

'services.email.verificationTokens.when' 

आप कर सकते थे में, इसलिए,, हालांकि, इस जानकारी के साथ समय-समय पर काफी आसानी से पुराने टोकन अमान्य, या अपने स्वयं स्थानीय कांटा या खातों-पासवर्ड की चादर के रोल।

+0

'जब' इस प्रकार टोकन बनाया गया था, जिस तारीख पर यह समाप्त हो जाएगा, वह नहीं देता है। क्या आपने कोड को क्रॉल करते समय स्वत:, संभवतः समय-आधारित टोकन समाप्ति के बारे में कोई डेटा प्राप्त करने में कामयाब रहे हैं? –

+0

कोई कोड नहीं है जो टोकन की समय सीमा समाप्त करता है। आपको अपना खुद का रोल करना चाहिए, उदाहरण के लिए, हर घंटे चलने वाली चीज बनाएं और पुरानी टोकन हटा दें। आप इसे प्रतिबिंबित करने के लिए रीसेट पासवर्ड ईमेल टेम्पलेट भी बदलना चाहते हैं। – MasterAM

+0

बेशक, आप हमेशा खाते-पासवर्ड को फोर्क कर सकते हैं या अपने विधि हैंडलर को ओवरराइड कर सकते हैं और इस कार्यक्षमता को इंजेक्ट कर सकते हैं। – MasterAM

संबंधित मुद्दे