Как перенаправить на другую страницу в node.js

Вопрос:У меня есть логин и страница регистрации. Когда случайный пользователь хочет войти в систему и логин будет успешным, я хочу перенаправить его на другую страницу .ejs(например, UserHomePage.ejs), однако ничего, что я пробовал, до сих пор не работал. if (loggedIn) { console.log("Success!"); res.redirect('/UserHomePage'); } else { console.log("Error!"); } Я также хотел бы знать, как перенаправить пользователя

Вопрос:

У меня есть логин и страница регистрации. Когда случайный пользователь хочет войти в систему и логин будет успешным, я хочу перенаправить его на другую страницу .ejs(например, UserHomePage.ejs), однако ничего, что я пробовал, до сих пор не работал.

if (loggedIn) { console.log(«Success!»); res.redirect(‘/UserHomePage’); } else { console.log(«Error!»); }

Я также хотел бы знать, как перенаправить пользователя при нажатии кнопки.

Скажем im на странице пользовательского экрана, где я показываю всех своих пользователей, тогда есть “добавить еще одну кнопку”. Как мне это сделать? Как перенаправить пользователя на страницу Register.js после onclick?

<h2>List of users</h2> <ul> <% uporabniki.forEach(function(user) { %> <li> <%= user.attributes.name %> <%= user.attributes.last name %> </li> <% }); %> </ul> <h3>Add another user</h3> <form method=»post»> <input type=»submit» value=»Add user» /> </form>

Большое спасибо!

Лучший ответ:

Вы должны вернуть строку, перенаправляющую

return res.redirect(‘/UserHomePage’); Ответ №1

Хорошо, я постараюсь помочь вам использовать один из моих примеров. Прежде всего, вам нужно знать, что я использую express для структуры каталога приложений и для создания файлов типа app.js автоматически. Мой login.html выглядит следующим образом:

… <div class=»form»> <h2>Login information</h2> <form action=»/login» method = «post»> <input type=»text» placeholder=»E-Mail» name=»email» required/> <input type=»password» placeholder=»Password» name=»password» required/> <button>Login</button> </form>

Здесь важна action = “/login” . Это путь, который я использую в своем index.js (для навигации между представлениями), которые выглядят следующим образом:

app.post(‘/login’, passport.authenticate(‘login’, { successRedirect : ‘/home’, failureRedirect : ‘/login’, failureFlash : true })); app.get(‘/home’, function(request, response) { response.render(‘pages/home’); });

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

http://cwbuecheler.com/web/tutorials/2014/restful-web-app-node-express-mongodb/

Чтобы прочитать инструкцию типа <% = user.attributes.name% > , рассмотрим простой profile.html, который имеет следующую структуру:

<div id = «profile»> <h3>Profilinformationen</h3> <form> <fieldset> <label id = «usernameLabel»>Username:</label> <input type = «text» id=»usernameText» value = «<%= user.user.username %>» /> <br> </fieldset> </form>

Чтобы получить атрибуты переменной пользователя, вы должны инициализировать переменную пользователя в вашем routing.js(например, index.js). Это выглядит как

app.get(‘/profile’, auth, function(request, response) { response.render(‘pages/profile’, { user : request.user }); });

Я использую mongoose для моей объектной модели:

var mongoose = require(‘mongoose’); var bcrypt = require(‘bcrypt-nodejs’); var role = require(‘./role’); var userSchema = mongoose.Schema({ user : { username : String, email : String, password : String } });

Спросите меня в любое время о дальнейших вопросах…
С наилучшими пожеланиями,
Назар

Ответ №2

Если пользователь успешно зарегистрировался в вашем приложении Node, я думаю, что вы используете Express, не так ли? Ну, вы можете легко перенаправить с помощью res.redirect. Как:

app.post(‘/auth’, function(req, res) { // Your logic and then redirect res.redirect(‘/user_profile’); }); Ответ №3

Оператор If else должен быть завершен в .get или .post для перенаправления. Например,

app.post(‘/login’, function(req, res) { });

или

app.get(‘/login’, function(req, res) { }); Ответ №4

@Nazar Medeiros – Ваше решение использует паспорт с Express. Я не пользуюсь паспортом, просто экспресс-jwt. Возможно, я что-то делаю неправильно, но когда пользователь входит в систему, токен должен вернуться на клиентскую сторону. Из того, что я нашел до сих пор, это означает, что мы должны вернуть json с токеном и поэтому не можем переадресовать. Там что-то мне не хватает?

Чтобы обойти это, я просто возвращаю токен, сохраняю его в своих файлах cookie и затем делаю запрос GET ajax (с действительным токеном). Когда этот вызов ajax возвращается, я заменяю html body возвращаемым HTML. Вероятно, это неправильный способ сделать это, но я не могу найти лучшего способа. Вот мой код JavaScript JQuery.

function loginUser(){ $.post(«/users/login», { username: $( ‘#login_input_username’ ).val(), password: $( ‘#login_input_password’ ).val() }).done(function(res){ document.cookie = «token = » + res.token; redirectToHome(); }) } function redirectToHome(){ var settings = { «async»: true, «crossDomain»: true, «url»: «/home», «type»: «GET», «headers»: { «authorization»: «Bearer » + getCookie(‘token’), «cache-control»: «no-cache» } } $.ajax(settings).done(function (response) { $(‘body’).replaceWith(response); }); } function getCookie(cname) { var name = cname + «=»; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(‘;’); for(var i = 0; i <ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ‘ ‘) { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return «»; } Ответ №5

По-другому вы можете использовать window.location.href=»your URL»

например:.

res.send(‘<script>window.location.href=»your URL»;</script>’);

или

return res.redirect(«your url»);

Оцените статью
Добавить комментарий