我刚刚开始处理一个已经存在的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 );
});
}));
}
答案 0 :(得分:0)
您可以使用res.render
函数将数据发送到视图。相同的文档可在以下位置获得:
https://expressjs.com/en/api.html#res.render
关于与通过password.js进行验证有关的特定问题,请查看: Send data back with the Passport js failureRedirect method