Показывать пользователю сообщение об ошибке при входе в систему - PullRequest
0 голосов
/ 19 апреля 2019

Я только начал работать над уже существующим проектом веб-приложения. Прямо сейчас, когда пользователь пытается войти в систему с неверными учетными данными, страница перенаправляется на страницу «relogin». Где сообщение «Пожалуйста, введите действительные учетные данные» жестко закодировано в HTML, чтобы показать «сообщение об ошибке». Меня попросили добавить еще одну функциональность в приложение. Я хочу показать пользователю сообщение, которое возвращает сервер.

Например: - Если ответ сервера

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

Я хочу показать пользователю «Пожалуйста, введите действительный адрес электронной почты».

Если ответ сервера

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

Я хочу показать пользователю «Пожалуйста, введите правильный пароль».

, но из-за настоящего кода я не могу этого сделать.

Пожалуйста, помогите мне с этой задачей.

Заранее спасибо.

Я прилагаю свой app.js, passport.js, authenticate.js код. пожалуйста, сообщите, если вам нужно больше деталей.

- app.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);

'' '

- authenticate.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;
};

'' '

- passport.js -

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: -

Нет углового кода для входа в систему. Вся процедура происходит только в html. Я прилагаю код HTML. Спасибо HTML код: -

<body>

<div class="col-md-6 offset-3">

<form action="/auth/login" method="post"  >

<div class="form-group mb-4 mt-4"><input id="email" class="form-control
    form-control-rounded" type="text" name = "username"
placeholder="Username"   ></div>

<div class="form-group mb-4 mt-4"><input id="password" class="form-control
    form-control-rounded" type="password" name="password"
  placeholder="Password"></div>

<button type = "submit" value = "Login"  class="btn btn-rounded btn-primary btn-block mt-2">Sign In</button>

</form>
</div>


</body>

1 Ответ

0 голосов
/ 19 апреля 2019

Вы можете использовать функцию res.render для отправки данных вашему представлению.Документация для того же доступна по адресу: https://expressjs.com/en/api.html#res.render

Что касается конкретной проблемы, связанной с проверкой через passport.js, посмотрите: Отправка данных обратно с помощью метода Passport js faultRedirect

...