@narem

Как добавить, что-то в сессию?

Не получается дополнить сессию. При авторизации все нормально работает, сессия сохраняется в mysql.
Но в блоке app.post("/addt", мне нужно как бы дополнить уже существующую и тут уже почему-то переменная не создается. Как быть?
app.get("/",(request,response)=>{
	if(request.session.userId && request.session.userLogin){
		response.render('index');
	}else{
		response.render('auth');
	}
	console.log(request.session.tok);
});

app.post("/addt", (request,response)=>{
	request.session.tok = request.body.token;
});

app.post("/auth",(request,response)=>{
	user.findOne({where: {login: request.body.login}})
	.then(usr=>{
		if(usr.login == request.body.login && usr.password == request.body.password){
			request.session.userId = usr.id;
			request.session.userLogin = request.body.login;
			request.session.userPass = request.body.password;

			response.json({
				status: true
			})
		}else{
			response.json({
				status: false
			})
		}
	})
	.catch(err=>{
		response.json({
			status: false
		})
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Che603000
c 2011 javascript

Но в блоке app.post("/addt", мне нужно как бы дополнить уже существующую и тут уже почему-то переменная не создается. Как быть?

Вы не до конца понимаете суть вопроса. Сессия устанавливается в request.seesion при каждом запросе к серверу. В вашем случае, скорее всего данные пользователя считываются из таблицы mysql. Таким образом
в блоке app.post("/addt", мне нужно как бы дополнить уже существующую
не получится

При авторизации все нормально работает, сессия сохраняется в mysql.

в блоке
app.post("/auth",(request,response)=>{
  user.findOne({where: {login: request.body.login}})
  .then(usr=>{

ничего не сохранятся, а напротив считывается из таблицы user данные пользователя для сравнения login и password
if(usr.login == request.body.login && usr.password == request.body.password){

Блок кода выше хоть и рабочий, но это означает что пароль у Вас в базе хранится в открытом виде, логины пользователей будут дублироваться, возможны атаки xss итп. Надеюсь что это часть курсовой работы, а не промышленный код...

app.post("/addt", (request,response)=>{
  request.session.tok = request.body.token;  // что тут вы хотели сделать,  request.body.token - в table user записать ???
});

Блок кода выше хоть совершенно бессмысленный. Здесь Вы оставили запрос без ответа. Как результат сервер когда нибудь вернет ошибку timeout.
Ответ написан
Комментировать
@emp1re
Каждый запрос имеет свой инстанс req/res, который удаляеться при вызове res.[end, json, render, etc];
В вашем кейсе просто храните токен в базе. А в начале реквеста создайте middleware берите эти данные из базы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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