Как перенаправить на динамический URL ExpressJS?

#node.js #express

#node.js #экспресс

Вопрос:

Я хочу создать страницу входа в систему, чтобы при успешном входе пользователя в приложение переходил на URL localhost:3000/:username . Так, например, когда пользователь с именем пользователя john входит в приложение, он должен перейти на localhost:3000/john . Я прочитал эту страницу о экспресс-маршрутизации https://expressjs.com/en/guide/routing.html но это, по-видимому, не объясняет этого. Это объясняет только, как получить имя пользователя из URL, но не наоборот (как перенаправить на другой URL в зависимости от имени пользователя). Любые подсказки будут оценены.

Комментарии:

1. После входа в систему создайте URL-адрес, на который должен перейти браузер, и используйте res.redirect(url) его, чтобы указать браузеру перейти на эту веб-страницу. Затем создайте маршрут с подстановочным знаком для имени пользователя. Но я бы не рекомендовал /:username , потому что это соответствует ВСЕМ маршрутам верхнего уровня, что означает, что вы создаете потенциальные конфликты с любыми другими маршрутами верхнего уровня, подобными /login тем, которые хочет использовать ваш сайт.

Ответ №1:

Вы можете использовать перенаправление после успешного входа пользователя в систему.

 var express = require('express');
var app = express();

// login page
app.get('/login', function (req, res) {
  res.send(`This is login page`);
});

// login verification
app.post('/login', function (req, res) {
  // verify user
  const user = getUserByEmailAndPassword(req.body.email, req.body.password);

  // set session  
  // ...

  // redirect
  res.redirect(`/${user.username}`);
});

// private user page
app.get('/:username', function (req, res) {
  const username = req.params.username;
  res.send(`Hello ${username}`);
});
 

Комментарии:

1. app.get('/:username', ...) обычно не рекомендуется, поскольку он соответствует ВСЕМ маршрутам верхнего уровня, создавая потенциальные конфликты между именами пользователей и любыми другими маршрутами верхнего уровня, которые ваш веб-сайт желает использовать, такими как /about , /contact , /home , и т. Д., И может усложнить будущий рост веб-сайта. /user/:username может быть лучшим вариантом.