2014-06-18 13 views
7

Cercando di implementare il ripristino della password nell'app.Password di reimpostazione delle meteore - facendo clic sul collegamento di posta elettronica non funziona

posso generare un'email di recupero che punta al mio app:

onemore.meteor.com/#/reset-Password/[token]

Quando clicco su questo link, si va all'URL, ma poi l'URL riscrive immediatamente onemore.meteor.com/#

Quando digito Session.get("resetPassword"), restituisce undefined

So che il token è valido. Se copio l'ultima parte del collegamento nell'e-mail "[token]" e lo incollo nella console, come Session.set("resetPassword",[token]), il modulo di recupero della password funziona come previsto.

Perché il mio URL riscrive il carico? Questo dovrebbe succedere? C'è qualcosa che devo interpretare prima della riscrittura?

Grazie

risposta

1

Si potrebbe provare a rimuovere la # dal URL di reset con qualcosa di simile:

Meteor.startup(function() {  

    Accounts.emailTemplates.resetPassword.text = function (user, url) { 
    url = url.replace('#/', '') 
    return " To reset your password, simply click the link below:\n\n" 
     + url; 
    }; 
}); 

Vedi anche How do you change the reset password URL in meteor?

0

Credo che è necessario aggiungere il percorso da soli.

Per router di ferro con CoffeeScript può piacere

Router.route '#/reset_password/:token', 
    name: 'reset_password' 
    onBeforeAction:()-> 
    if Meteor.userId() then this.redirect('/') else this.next() 
    Accounts._resetPasswordToken = this.params.token 

e si dovrebbe anche aggiungere il modello reset_password.

0

Ho avuto questo problema per molto tempo ed è stato finalmente risolto.

Come risulta, il processo che esegue una reimpostazione della password memorizza resetPasswordToken nelle variabili di sessione.

Nel mio caso, stavo cancellando tutte le variabili di sessione ogni volta che l'ID utente è cambiato, che cancellerebbe il token, che disabilitava la visualizzazione della finestra di dialogo.

Ora ho cancellato solo le variabili di sessione che utilizzo (invece di chiamare Session.clear()) e il problema è stato risolto.