Как верно организовать роботу сайта на nodejs?

Разрабатываю небольшое приложение, но опыта в серверном програмировании нету. Приложение на node.js, шаблонизатор ejs.
Нужно чтобы было так:
1. При входе запрашивает логин/пароль.
2. Если верно - показывает главную страницу.
3. Пользователь вводит данные, отправляет их через ajax.
4. Сервер получив запрос изменяет вид этой страницы (данные на ней).

Что есть сейчас:
При входе ("/") index.js:
router.get('/', function(req, res) {
	if (req.signedCookies.rememberme == 'registered') {
		var register = true
		res.render('index', { register:register });
	} else {
		var register = false;
		res.render('index', { register:register });
	}
});


Код шаблона:
<% if (register == false) { %>
		<%= include login.ejs %>
	<% } %>
	
	<% if (register == true) { %>
		<%= include main.ejs %>
	<% } %>

Пользователь попадает на login.ejs, так как не зарегистрирован. Там вводит логин/пароль и происходит сверка с базой. Если такой пользователь с паролем есть - записываю cookie:
res.cookie('ImRegistered', 'registered', { maxAge: 900000, signed: true })

И обновляю страницу. Теперь index.js нас пускает (видит что мы авторизировались по cookie) и мы получаем страницу контента. Чтобы разлогинится - удаляю куки.

Это правильно или за такое горят в аду?

Теперь нужен пункт 4. Как мне изменять уже отрендереную страницу? После того как я 1й рас отдал
res.render('index', { register:register, somevar: 'someval' });

2й вызов этого же кода не работает. Как мне обновлять что либо? Например я хочу обновить main.ejs который заинклужен на странице.
  • Вопрос задан
  • 2724 просмотра
Решения вопроса 1
Rikcon
@Rikcon
Авторизация через куки- дырища в безопасности, тем более они у вас даже не обсфукцированы.
Из имени куки ImRegistered и signed можно понять зачем она нужна и подставить своё значение.

Пользуйтесь сессиями https://github.com/expressjs/session
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Оффтопик: ужасный код. Во-первых, не объявляйте переменные в условных блоках. Во-вторых, неужели вы не видите, что у вас дважды написано одно и то же?

router.get('/', function(req, res) {
    res.render('index', { register:  req.signedCookies.rememberme == 'registered' })  
});
Ответ написан
smanioso
@smanioso
Отмечайте ответы на свои вопросы!
Почитайте вот в эту сторону - passportjs.org
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы