Si hago clic en el botón de inicio de sesión en la página secundaria, se vuelven a cargar las páginas secundaria y secundaria.

Estoy restableciendo la contraseña usando angular.js y node.js. En la página principal, hice clic en el enlace Olvidé mi contraseña y luego ingresé la dirección de correo electrónico. Un enlace enviará a ese correo.

página de inicio de sesión

login.html

Página de contraseña olvidada

olvidé la contraseña.html

Después de hacer clic en el botón Restablecer contraseña, recibí un correo electrónico con el enlace para restablecer la contraseña.

Página de reinicio de contraseña

Página de reinicio

Después de hacer clic en el enlace, se abrió la página de restablecimiento de contraseña y cambié la contraseña. Muestra un mensaje de éxito.

Página de reinicio de contraseña

Reiniciar

Después de esto, hice clic en Go back to login enlace de Go back to login y esta página secundaria se redirigió a la página de inicio de sesión. Al mismo tiempo, la página principal también se redirige a la página de inicio de sesión desde la página de contraseña olvidada. Una vez que inicié sesión desde la página secundaria con éxito, en la barra de URL de la página principal se muestra así http://localhost:3000/pages/auth/login?username=&password=kevin . Se muestra mi contraseña en la barra de URL de la página principal. Por lo tanto, ahora quiero hacer la página principal no se redirige.

login.module

 (function () { 'use strict'; angular .module('app.pages.auth.login', []) .config(config); /** @ngInject */ function config($stateProvider, $translatePartialLoaderProvider) { $stateProvider.state('app.pages_auth_login', { url : '/pages/auth/login', views: { '[email protected]' : { templateUrl: 'app/core/layouts/basic.html' }, '[email protected]_auth_login': { templateUrl: 'app/main/pages/auth/login/login.html', controller : 'LoginController as vm' } } }); $translatePartialLoaderProvider.addPart('app/main/pages/auth/login'); } })(); 

reset-password.module

 (function () { 'use strict'; angular .module('app.pages.auth.reset-password', []) .config(config); /** @ngInject */ function config($stateProvider, $translatePartialLoaderProvider) { $stateProvider.state('app.pages_auth_reset-password', { url : '/pages/auth/reset-password?token', views: { '[email protected]' : { templateUrl: 'app/core/layouts/basic.html' }, '[email protected]_auth_reset-password': { templateUrl: 'app/main/pages/auth/reset-password/reset-password.html', controller : 'ResetpasswordController as vm' } } }); } })(); 

olvidó-password.module

 (function () { 'use strict'; angular .module('app.pages.auth.forgot-password', []) .config(config); /** @ngInject */ function config($stateProvider, $translatePartialLoaderProvider) { $stateProvider.state('app.pages_auth_forgot-password', { url : '/pages/auth/forgot-password', views: { '[email protected]' : { templateUrl: 'app/core/layouts/basic.html' }, '[email protected]_auth_forgot-password': { templateUrl: 'app/main/pages/auth/forgot-password/forgot-password.html', controller : 'ForgotPasswordController as vm' } } }); $translatePartialLoaderProvider.addPart('app/main/pages/auth/forgot-password'); } })(); 

api.js

 router.post('/pages/auth/forgot-password', function(req,res,next){ var maillist = req.body.email; async.waterfall([ function(done) { crypto.randomBytes(20, function(err, buf) { var token = buf.toString('hex'); done(err, token); }); }, function(token, done) { User.findOne({ email : maillist}, function(err, user) { if (!user){ var message = { message: 'No account with this email address exists.' }; done(null, message); } else if (token, user, done){ user.resetPasswordToken = token; user.resetPasswordExpires = Date.now() + 3600000; user.save(function(err) { done(err, token, user); }); var mailOptions={ to : maillist, subject : 'Password Recovery', text: 'Dear ' + maillist + ' \n\n' + 'You are receiving this because you (or someone else) have requested the reset of the password for your account.\n\n' + 'Please click on the following link, or paste this into your browser to complete the process:\n\n' + 'http://127.0.0.0:3000/pages/auth/reset-password?' +'token='+ token + '\n\n' + 'If you did not request this, please ignore this email and your password will remain unchanged.\n' }; transport.sendMail(mailOptions, function(error, response){ if(!error){ } transport.close(); }); var message = { message: 'We have sent a link on ' + maillist + ' to reset your password and you should receive it shortly.' }; done(null, message); } }); } ], function(err, result){ if (err) return next(err); return res.json({ result: result.message }); }); }); router.get('/pages/auth/reset-password/:token', function(req, res) { User.findOne({ resetPasswordToken: req.query.tkn, resetPasswordExpires: { $gt: Date.now() }}, function(err, user) { if (!user){ //req.flash('error', 'Password reset token is invalid or has expired.'); //return res.redirect('http://127.0.0.0:3000/api/pages/auth/forgot-password'); return res.json({result: 'Password reset token is invalid or has expired.'}); } return res.redirect('http://127.0.0.0:3000/api/pages/auth/reset-password/:token', { user: req.user }); }); }); router.post('/pages/auth/reset-password/:token', function(req, res){ var tkn = req.body.tkn; async.waterfall([ function(done) { User.findOne({ resetPasswordToken: req.body.tkn, resetPasswordExpires: { $gt: Date.now() } }, function(err, user) { if (!user) { var message = { message: 'Password reset token is invalid or has expired.' }; done(null, message); }else if (user, done){ user.password = req.body.data.newPassword; user.resetPasswordToken = undefined; user.resetPasswordExpires = undefined; user.save(function(err) { req.logIn(user, function(err) { done(err, user); }); }); var mailOptions={ to : user.email, subject : 'Your password has been changed', text: 'Hello,\n\n'+ 'This is a confirmation that the password for your account ' + user.email + ' has just been changed.\n' }; transport.sendMail(mailOptions, function(error, response){ if(!error){ } transport.close(); }); var message = { message: 'Success! Your password has been changed. Click below link to login.' }; done(null, message); } }); } ], function(err, result){ if (err) return next(err); return res.json({ result: result.message }); }); });