2015-10-25 14 views
7

Per Accounts.forgotPassword() e Accounts.sendVerificationEmail(), viene generato un token.I token di posta elettronica della password degli account scadono mai?

Questo token ha una scadenza?
Se sì, dopo quale periodo di tempo?

+0

Un 'verificationToken' ha una data/ora di creazione ma non una data/ora di scadenza. So che un token di verifica o un token di reimpostazione della password possono essere utilizzati solo una volta. –

+0

Interessante - che se uso il token due volte (clicca di nuovo sul link email) ottengo questo messaggio err: "Errore: Token scaduto [403]" Ingannevole testo. – Artfree

+0

Michael: è possibile accedere alla data di creazione della data di creazione del controllo? Se è così, posso creare la mia routine di scadenza dei token. Grazie. – Artfree

risposta

1

Al momento non esiste un codice incorporato correlato alla scadenza del token, né l'impostazione di un tempo di scadenza né l'applicazione di esso.

I dati di reset e-mail (Token, e-mail e Token data di creazione) viene salvato nel record dell'utente, come si può vedere in the source:

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

Pertanto, la data è nel seguente selettore mongo:

'services.password.reset.when' 

Purtroppo, tutti i dati reset è disinserito, non appena il metodo resetPassword viene chiamato con il token corretto.

Ciò rende inutilizzabile le validateLoginAttempt callback:

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

Analogamente, il token di verifica email viene memorizzato in user.services.email.verificationTokens, che (se impostato) è una matrice di record di token. sono

Le date, quindi, in

'services.email.verificationTokens.when' 

Si potrebbe, tuttavia, invalidare vecchi gettoni periodicamente abbastanza facilmente con queste informazioni, o rotolare il proprio forcella locale o involucro di conti-password.

+0

' when' indica quindi la data in cui è stato creato il token, non quello in cui scadrà. Sei riuscito a trovare dati sulla scadenza automatica, possibilmente basata sul tempo, durante la scansione del codice? –

+0

Non esiste alcun codice che scada il token. Ad esempio, devi eseguire il rollover, creare qualcosa che viene eseguito ogni ora e rimuove i token precedenti. Potresti anche voler cambiare il modello di email di reimpostazione della password per riflettere questo. – MasterAM

+0

Ovviamente, è sempre possibile inserire gli account-password o sovrascrivere i gestori dei metodi e inserire questa funzionalità in. – MasterAM

Problemi correlati