#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
может быть лучшим вариантом.