登录时出现问题时向用户显示错误消息

时间:2019-04-19 06:58:22

标签: node.js angularjs html5 express passport.js

我刚刚开始处理一个已经存在的Web应用程序项目。现在,当用户尝试使用不正确的凭据登录时,页面将被重定向到“重新登录”页面。消息“请输入有效凭据”在HTML中进行了硬编码,以显示“错误消息”。我被要求向应用程序添加其他功能。我想向用户显示服务器返回的消息。

例如:- 如果服务器响应为

TheTh@nos

我想向用户显示“请输入有效的电子邮件”。

如果服务器响应为

    { result : "false" , message : " Invalid email "  }

我想向用户显示“请输入正确的密码”。

,但是由于当前的代码,我无法做到这一点。

请帮助我完成此任务。

谢谢。

我正在附加我的app.js,passport.js和authenticate.js代码。请告知您是否需要更多详细信息。

-app.js-

    { result : "false" ,message : " Invalid password "  }

'''

-authenticate.js-

var express = require('express');
var path = require('path');
var logger = require('morgan');
var bodyParser = require('body-parser');
var session = require('express-session');
var passport = require('passport');
var initPassport = require('./passport');

initPassport(passport);

var routes = require('./routes/routes');
var authenticate = require('./routes/authenticate')(passport);

app.use('/',routes);
app.use('/auth',authenticate);

'''

-passport.js-

var express = require('express');
var router = express.Router();
var path = require('path');

module.exports = function(passport) {

router.get('/logout', function(req, res){
req.logout();
res.redirect('/');
});

router.post('/login',passport.authenticate('login',{
successRedirect: '/',
failureRedirect: '/relogin',
}));

return router;
};

''' 编辑1:-

没有用于登录的角度代码。 所有过程仅在html中发生。 我正在附上HTML代码。谢谢 HTML代码:-

var LocalStrategy = require('passport-local').Strategy;
var pg = require('pg');
var path = require('path');
var fs = require('fs');
var Client = require('node-rest-client').Client;

var client = new Client();

module.exports = function(passport){

passport.use('login', new LocalStrategy({
passReqToCallback : true
},
function(req, username, password, done) {
var client = new Client();

client.get(serverHost+serverRoot+"/validateuser?username="+username+"&                    password="+password, function (data, response) {
// parsed response body as js object 
// raw response 
console.log("response from server ", data);
if(data.result == "true")
    return done(null, username); 
else
  return done(null ,false );
});
}));

}

1 个答案:

答案 0 :(得分:0)

您可以使用res.render函数将数据发送到视图。相同的文档可在以下位置获得: https://expressjs.com/en/api.html#res.render

关于与通过password.js进行验证有关的特定问题,请查看: Send data back with the Passport js failureRedirect method