2016-05-13 3 views
0

Как передать информацию POST на следующую отображаемую страницу с помощью Nodejs?Как передать информацию POST на следующую отображаемую страницу с помощью Nodejs?

Я аутентифицирую логин пользователя и, если они вводят правильные учетные данные, я хочу передать электронное письмо пользователя на следующую визуализированную страницу (панель пользователя) в качестве приветствия.

Вот что у меня есть до сих пор - это успешно аутентифицирует пользователя и загружает панель управления.

app.post('/login', function(request, response) 
{  
var email = request.body.email; 
var password = request.body.password; 

console.log("post received: %s %s", email, password); 

var query = 'SELECT * FROM Users WHERE email = \'' + email + '\'' + 'AND  password = \'' + password + '\''; 

pg.connect(process.env.DATABASE_URL, function(err, client, done) { 
    client.query(query, function(err, result) { 
    done(); 

    var numRows = result.rows.length; 
    console.log("Row count: %d",result.rows.length) 
    if (err) 
    { console.error(err); response.send("Error: Could not execute query" + err); } 
    else { 
    if (numRows == 0) 
    { 
     response.render('pages/loginerrorindex'); 
    } 
    else { 
    response.render('pages/dashboard', {results: result.rows}); 
    } 
    } 
}); 
}); 
}); 
+0

использовать сеанс какого-либо рода или перенаправить его с помощью электронной почты? – taesu

+0

Сохраните информацию пользователя в сеансе после успешной попытки входа в систему. И напишите новый API для возврата информации о сеансе. Используйте вывод этого API, чтобы показать детали в пользовательском интерфейсе. –

ответ

0

передать письмо на ваш взгляд {результаты: result.rows, электронная почта: электронная почта}

0

HTTP является лицом без гражданства. Когда вы проверяете пользователей в Интернете, вы должны сохранять их состояние в сеансе или любое хранилище, доступное как для сервера, так и для клиента, чтобы определить, что следующие запросы поступают от одного и того же пользователя.

Сервер должен генерировать безопасный идентификатор сеанса и создавать файлы cookie.

Клиент отправляет файлы cookie по каждому запросу. Всякий раз, когда пользователь аутентифицируется, ваше фоновое приложение будет получать ваш файл cookie для сеансов аутентификации и вы можете получить от него идентификатор пользователя.

Сделайте SQL-запрос, чтобы получить пользовательские данные пользователя по его идентификатору и отобразить, что вам нужно. В любом приложении или рамки там мы, как правило, какой-то объект Auth, где вы можете пройти аутентификацию пользователя через Auth.user(), и вы можете проверить, если пользователь прошел проверку подлинности:

if (Auth.check()) { 
    // user = Auth.user() and display user menu, photo, e-mail 
} else { 
    // display Hello guest 
} 

Вот простой пример аутентификации с использованием популярных NodeJS рамки - Express.js http://www.codexpedia.com/node-js/a-very-basic-session-auth-in-node-js-with-express-js/

Теперь об отправке данных POST с одной страницы на другую страницу:

Принцип такой же, как с аутентификацией, описанной выше. Однако, если вам нужно только отображать информацию, есть много способов сделать это.

Классический подход в веб-разработке снова использует сеанс/файлы cookie. Создайте флеш-файл и удалите его в следующем запросе. Например, вы хотите отобразить успешное зеленое сообщение на следующей странице при входе пользователя. На успешном сервере входа создается флеш-файл cookie. На следующем запросе вы проверяете, если вспышка печенье существует, и если да - получить содержание от него и сделать сообщение, например:

if (Flash.has('auth_message')) { 
    // render message here <div>{{ Flash.get('auth_message') }}</div> 
} 

Другой вариант сделать то же флэш-логику только на стороне клиента, используя LocalStorage/sessionStorage.

Если у вас есть форма с несколькими шагами, не рекомендуется сохранять каждый предыдущий шаг данных. Это сложно с точки зрения кода и UX, потому что пользователь должен подождать, пока следующий шаг полностью перезагрузится. Многоступенчатые формы должны быть реализованы как небольшие одностраничные приложения. Каждый следующий шаг должен быть скрыт или загружен через ajax.

Смежные вопросы