Всего 125 952 комментария

Александр Мельник
12 мая 2022, 12:52
0
ну тоесть nginx все таки используется на продакшене?
Нет, не вопрос в том чтобы это запустить, я довольно хорошо разбираюсь в администрировании линукс серверов и смогу настроить и многодоменность и проксирование запросов.
Вопрос в том что это нигде не обсуждается разрабочтками ну и плюс наверное путаницей в терминологии. Вот Василий выше написал что nuxtjs разработал свой сервер, взамен express.
И у меня складывается впечатление, что именно на вот таких серверах (express, nitro) и работает все на продакшене без использования nginx, что кажется мне совершенно неверным решением.
evgeniy dovgani
12 мая 2022, 12:36
0
Все три сайта с такой заглючкой имеют один симптом — кирилица становится знаками вопроса…
хотя кодировка бд утф8_генерал_си. хз мучаюсь пока.

Знаю на счет рекомендации, но сайты простяцкие, пдоТулс, формит, ажахФорм. ну и Бабель.
Обновил первый, решил вопросы с бабелем, потом отключением симплсерч плагина, потом с нерабочим хуком «спам» у формита. и пошло поехало. но на 20-том сайте появились и такие проблемы.

сорри что не совсем канонично описал и написал :)
iWatchYouFromAfar
12 мая 2022, 12:36
0
Это уже тема не ноды, а настройки серверов на Nginx. Моя серия именно про работу с нодой в кач-ве бекенда (к слову, я цикл статей еще не завершил).

Не уверен что буду писать «how to», но могу дать очень полезный совет. Арендуй простой сервер, и попробуй развернуть там два сайта самостоятельно, инструкций по конфигурации серверов в инете масса, но ищи на английском языке лучше.

Запускаешь процессы ноды на разных портах, затем проксируешь их через nginx на нужный тебе порт, главное в директиве server_name указать нужный домен.

P.S.
Да и вообще, переход на JS с MODx и прочих CMS-ок дался мне не так просто, как первый сайт на том же WP или MODx. Не жди что придет кто-то и разжует тебе все, делай сам. Будет дольше, но тогда ты точно научишься и уже сам напишешь (а может и не напишешь) статью.
Andrew
12 мая 2022, 12:17
0
Там рекомендацию давали боевые проекты пока не обновлять) Но если найдете проблему и пути решения тогда лучше это дело на гит закинуть, чтобы пофиксить.
evgeniy dovgani
12 мая 2022, 11:53
0
ну как бе да, но их несколько десятков сайтов-копий с разным дизайном и везьде без особых проблем. кроме 4 случаев.

(хостинги разные)

будем выруливать как то :)
Futuris
12 мая 2022, 11:50
0
Было бы неплохо, конечно.
Александр Мельник
12 мая 2022, 11:45
0
Ну вот давайте попросим вместе автора этого поста поделиться такой информацией.
Как работает экспрес, уроки по ноде и прочее — в сети миллиарды.
А вот то как устроен сервер, на который это размещается. Как там устроено принятие запросов, кто слушает какие порты, как организовать два домена на одном сервере и так далее — вот этого почти нет.
Futuris
12 мая 2022, 11:29
0
Но я никогда не видел, как это деплоится на продакшен сервер и самое главное, как это там работает?
Если даже у вас это вызывает вопросы, представьте как у меня крыша кипит.)) Все эти
npm run dev
, и тоже думаю — а кто-бы показал, как это все на реальном хостинге и конкретном домене работает.))
Александр Мельник
12 мая 2022, 11:22
0
плюс расскажите пожалуйста как вы решаете проблему «первого запроса».
Ведь токен нужно передать на сервер при первом запросе.
— пользователь запускает браузер
— вводит адрес
— браузер получает ip сервера
— в браузере в локалстораже лежит access токен
Каким образом он будет передан в первом запросе, чтобы пользователь сразу был авторизован?
Как этот вопрос решаете вы?
Александр Мельник
12 мая 2022, 11:12
0
спасибо, я конечно же смотрел видео Ильи.
И он как раз тоже рассказывает о том, что jwt это небезопасный инструмент, тот случай когда технология стала популярной не за заслуги, а вопреки недостаткам.
Но мои знания теоретические, я еще нигде не использовал jwt в серьезных проектах.
По крайней мере украть куку через js гораздо сложнее (есть способы сделать ее недоступной) а вот доступ к
localstorage закрыть нельзя.
iWatchYouFromAfar
12 мая 2022, 11:04
0
А что по твоему идеально-безопасный механизм аутентификации пользователя? Тот же twitch.tv использует очень похожу на JWT аутентификацию, записывая и перезаписывая в localStorage разные данные.

JWT это технология, которая дает достаточно стабильный механизм аутентификации. А его доработку и безопасность уже дорабатывай сам. Программа минимум — делать refresh token.

Ну и если за твой сервис возьмуться специалисты, которые занимаются взломом за деньги, то готовься к сложностям.

Еще советую посмотреть видео Ильи Климова про JWT аутентификацию.
iWatchYouFromAfar
12 мая 2022, 10:52
+1
Отвечаю на вопрос про Express. Изучать его и написать на нем пару проектов — маст хев, т.к. это что-то вроде флагмана в мире бекенда на JS, плюс тот же Nest из коробки использует под капотом именно Express. Потыкав пальцем в Express, уже сам поймешь куда тебе двигаться дальше.

Неидеальности Express заключается минимум в его архитектуре, которая с ростом проекта становится сложночитаемой и сложноподдерживаемой. Ты это сам поймешь когда попробуешь сделать нечто большее чем просто блог.
Andrew
12 мая 2022, 10:41
0
Обновили боевой проект?
Александр Мельник
12 мая 2022, 09:41
0
спасибо.
Но в инете много информации по этому вопросу. Странно задавать его здесь.
Но мы ведь с вами как раз и в инете) На сайте который представляет из себя форум, на котором обсуждаются технологии веб разработки и на котором находятся много умных людей, поэтому задать вопрос здесь — мне кажется очень разумным.
Я вот например впервые в жизни слышу про OpenID Connect. И ничего подобного по запросу — межсерверная авторизация мне не попадалось, а вы раз — и подсказали.
Вы правы, я жутко люблю изобретать велосипеды, а не использовать чьи то готовые решения. Понимаю, что в 2022 году это неправильный подход, но ничего поделать не могу. Для меня программирование это прежде всего изобретательство и наслаждение от поиска решения, а когда — установи вот эту библиотеку и скопипасти со стековерфлов такой то код — то это наоборот боль. Но это мои тараканы)
Александр Мельник
12 мая 2022, 09:30
0
nextjs, nestjs,nuxtjs, vuejs — голова кругом идет. Причем я так понимаю что vue это фреймворк языка js, а nuxtjs это уже фреймворк фреймворка vue.
я часто вижу видео по разработки чего либо на nodejs, всегда все разработчики запускают какой либо из веб серверов у себя локально, на каком то доступном порту и разрабатывают. Но я никогда не видел, как это деплоится на продакшен сервер и самое главное, как это там работает?
Поделитесь пожалуйста информацией.
— вы что, на продакшене тоже не используете nginx? Кто именно слушает 80 порт и передает запросы приложению?
— как вообще решается вопрос с размещением нескольких сайтов на одном сервере? Если у апача есть свои вирутальные хосты, у nginx есть понятие server{} и эта настройка тоже содержит hostname и позволяет создать большое количество сайтов на одном сервере, то ничего подобного у того же express я не вижу. Максимум что можно сделать, это запустить несколько «серверов express» на разных портах, но это ведь не сделает их доступными в интернет. Все равно ведь нужно иметь nginx который будет принимать запросы на 80 порту, получать домен и проксировать запрос в зависимости от домена на express. Или я ошибаюсь?
— если все таки nginx действительно не используется, а сервера на продакшине представляют собой запущенный express или nuxt nitro, который сразу слушает 80 порт, то неужели эти программы действительно способны тягаться в безопасности и стабильности с гигантами и давно зарекомендовашими себя apache или nginx? Это сервисы проверенные временем и пользователями, а что такое nuxtjs nitro? Он буквально возник недавно, в документации написано что всего 9 месяцев назад его начали разрабатывать. Что мы можем знать о безопасности этого продукта?
Georg
12 мая 2022, 09:17
0
Спасибо за подсказку, решил поменять CSS на AjaxForm, быстрее и надежнее
Сергей Шлоков
12 мая 2022, 09:06
+1
Изучаю эту технологию и честно говоря, на мой взгляд, это очень небезопасная система.
Web — это вообще небезопасная сфера.

Какую бы документацию не читал, везде встречаю фразу типа — даже если у вас украдут токен, то он позволит пользоваться сервисом не долго.
А если у тебя украдут авторизационную куку?

Не говоря уже о том, что большинство разработчиков не ставят время жизни в 10 минут, а ставят 12 часов а то и больше
Честно говоря, сомневаюсь в твоей оценке. Уверен, есть такие разработчики, но их количество резко сокращается с увеличением опыта. Особенно, когда они узнают про refresh token.

кто то даже хранит их (access token) в базе
Наверно это те же «спецы».

Изобретаю механизм межсерверной аутентификации.
Пополняешь список велосипедостроителей? Есть уже готовые стандарты — OAuth2 и OpenID Connect. Первый — это протокол авторизации. Второй — это надстройка над первым для аутентификации. Он позволяет использовать единый логин (SSO) для сервисов. Для всех языков есть библиотеки.
В id токене ты можешь хранить информацию о пользователе (его id, email или телефон). По нему ты можешь получить пользователя из БД, которого в крайнем случае ты можешь заблокировать. Это один из вариантов.
Кроме того, авторизационный сервер хранит access_token для клиента.

В комментарии всё не опишешь. Но в инете много информации по этому вопросу. Странно задавать его здесь.
Александр Мельник
12 мая 2022, 07:31
0
Господа, раз уж здесь обсуждаются технологии из мира javascript, то хочу услышать ваше мнение и опыт использования jwt токенов как инструмента авторизации?
Изучаю эту технологию и честно говоря, на мой взгляд, это очень небезопасная система.
Плюс вижу, что совершенно каждый разработчик реализует логику работу с jwt по своему, кто то даже хранит их (access token) в базе, хотя по моему это полностью противоречит идее самого токена. Зачем тогда сигнатура в токене, если хранить в базе ассоциацию между пользователем и токеном, это по сути получается механизм сессий с хранением в базе.
Какую бы документацию не читал, везде встречаю фразу типа — даже если у вас украдут токен, то он позволит пользоваться сервисом не долго. Не говоря уже о том, что большинство разработчиков не ставят время жизни в 10 минут, а ставят 12 часов а то и больше, но даже 10 минут хватит, чтобы не спеша и попивая кофе выкачать например всю базу с клиентами. Ничего себе система авторизации и безопасности).

Но это мои и пока теоретические мнения. А есть у кого то реальный и положительный опыт использования токенов именно как инструмента аутентификации? Как применяете его вы? Где храните токены на клиенте? В localstorage? Разбирались ли глубоко

Собственно, почему я, человек далекий (надеюсь что это временно ) от nodejs и стеков типа MEAN, решил вообще изучить jwt. Изобретаю механизм межсерверной аутентификации. Нужно сделать, чтобы человек авторизовавшись в одном сервисе (домене и сервере), перейдя на другой сервис (домен и сервер) сохранил свою аутентификацию и был уже авторизован. Инструмент сессий для этого мало подходит, ну разве что с хранением сессии в общей базе данных, к которой будут иметь доступ все сервисы… В общем буду рад вашим идеям, я то найду и изобрету такой механизм, но чужой опыт — всегда бесценен.
Артур Шевченко
11 мая 2022, 23:35
0
Я бы на странице вывел например , а потом вот тут assets/components/sweetalert2/js/default.js проверял бы значение в meta[name=«pageid»] и в зависимости от этого запускал бы скрипт.
Артур Шевченко
11 мая 2022, 20:17
+1
Я сейчас тебя удивлю, но в родном чанке от minishop2 уже всё за тебя написали.
{foreach $options as $name => $values}
    <div class="form-group row align-items-center">
        <label class="col-6 col-md-3 text-right text-md-left col-form-label" for="option_{$name}">{('ms2_product_' ~ $name) | lexicon}:</label>
        <div class="col-6 col-md-9">
            <select name="options[{$name}]" class="form-control col-md-6" id="option_{$name}">
                {foreach $values as $value}
                    <option value="{$value}">{$value}</option>
                {/foreach}
            </select>
        </div>
    </div>
{/foreach}