Привет, участники!
Надеюсь, у всех у вас всё хорошо.
Я создал форум на Discourse и попытался подключить его к своему веб-сайту (ASP.NET).
Сначала я использовал Discourse-Connect, и это сработало, однако в этом случае пользователи не могут войти в форум или зарегистрироваться.
Поэтому я попробовал использовать Discourse-API для входа в форум, но не смог завершить настройку.
Я прочитал множество документов, но не нашёл правильного решения.
Пожалуйста, кто-нибудь помогите мне решить эту проблему или подскажите, возможно ли это и какое решение будет верным.
С уважением,
У вас есть два варианта:
-
Настройте DiscourseConnect так, чтобы пользователи регистрировались и входили в систему на вашем сайте, а при попытке войти на ваш форум это происходило автоматически. Это стандартная настройка. Если вы настроите всё таким образом, то вся регистрация и вход будут осуществляться на вашем сайте. Вход и регистрация с использованием имени пользователя и пароля на вашем форуме будут отключены.
-
Настройте DiscourseConnect так, чтобы пользователи регистрировались и входили в систему на вашем форуме, а при попытке войти на ваш сайт (сайты) это происходило автоматически. Это называется настройкой Discourse в качестве провайдера DiscourseConnect. Инструкция по выполнению этой настройки доступна здесь.
Спасибо за быстрый ответ.
Есть ли возможность обойтись без DiscourseConnect?
Почему вы не хотите его использовать?
Конечно, вы можете реализовать что-то самостоятельно, но в этом случае вы потеряете годы опыта, вложенные в создание DiscourseConnect. Поэтому, прежде чем решиться на такую масштабную задачу, вы должны понять, какие веские причины у вас есть для создания собственного решения вместо использования уже готового.
Конечно, я знаю, что DiscourseConnect — отличная функция.
Но моя цель — локальный вход и регистрация на форуме Discourse.
Поэтому я попытался использовать API Discourse.
Есть ли такая возможность с помощью API Discourse?
Спасибо.
С уважением
Хорошо, если вы хотите реализовать локальный вход и регистрацию на Discourse, пожалуйста, уточните, какую интеграцию с вашим сайтом вы планируете.
Моя цель — реализовать следующее:
- Если пользователь авторизован на моем сайте, при переходе на форум он автоматически входит в систему.
- Пользователь может войти в систему и зарегистрироваться на форуме.
- Если пользователь авторизован на форуме, при переходе на мой сайт он автоматически входит в систему.
С помощью DiscourseConnect я могу реализовать пункты 1) и 3), но не пункт 2).
Однако пункт 2) для нас крайне важен.
Если вы разрешите пользователям регистрироваться в двух местах, всё очень быстро превратится в хаос. Именно поэтому вам необходимо сделать выбор: либо пользователи регистрируются на вашем сайте, либо на вашем форуме, но не в обоих случаях одновременно.
Почему это так важно для вас?
Спасибо за вашу помощь.
Однако мой босс хочет этого.
Пожалуйста, проверьте мои действия.
Я попытался выполнить вход через Discourse API следующим образом:
- Вызов GET ‘/session/csrf’ для получения CSRF-токена и cookie.
- Вызов POST ‘/session’ с заголовками: ‘X-CSRF-Token’ = ‘csrf token’, ‘Cookie’ = ‘полученный cookie’, и данными: login, password, timezone, second-factor-method, authenticity-token.
- Вызов POST ‘/login’ с заголовком: ‘Cookie’ = ‘полученный cookie из /session’ и данными: username, password, redirect.
Все логи совпадают с рабочим процессом входа в Discourse.
Однако при перенаправлении на форум Discourse пользователь не вошел в систему.
Как решить эту проблему? Где ошибка?
Ещё раз спасибо за помощь.
PS. Мой сервер — Ubuntu Nginx Server.
Тогда вам нужно объяснить своему руководителю, что регистрация пользователей в нескольких местах — очень плохая идея. Всё превратится в огромную неразбериху. Объясните ему, что произойдёт, если пользователь зарегистрируется на сайте под именем usernameA, а на форуме под именем usernameB, используя один и тот же адрес электронной почты! Или что произойдёт, если пользователь изменит пароль только на сайте или только в Discourse. Тогда всё сломается!
То, что вы сделали, приводит к тому, что ваш СЕРВЕР входит на форум как пользователь. Это не установит куки сессии для пользователя, поэтому пользователь не войдёт в систему на форуме.
Кроме того, у вас, судя по всему, есть доступ к паролям пользователей в открытом виде. Это ОЧЕНЬ ПЛОХАЯ идея. Вы всегда должны хранить хеш (одностороннее шифрование) пароля и никогда не хранить пароль в открытом виде. Если вашу базу данных взломают, все пароли ваших пользователей станут известны злоумышленнику. Это ещё один хороший аргумент, который стоит объяснить вашему руководителю.
Я привёл вам три веские причины, которые вы можете использовать, чтобы убедить руководителя поступать иначе. Текущий подход приведёт лишь к огромным проблемам. Я не могу помочь вам заставить это работать, потому что это не будет работать. Даже если вам удастся заставить это работать, это сработает лишь в краткосрочной перспективе.
Понял. Объясню это своему начальнику. Большое спасибо. Хочу обсудить с вами ещё кое-что (конечно, не это). С уважением
Пожалуйста, помогите мне ещё раз.
У моего сервера форума есть один основной домен и несколько поддоменов.
Могу ли я создать несколько форумов Discourse на каждом домене, используя одну базу данных?
И можно ли организовать это следующим образом?:
- На основном домене: возможность локального входа и регистрации.
- На поддоменах: подключение к моим сайтам через DiscourseConnect.
Если это возможно, пожалуйста, дайте инструкцию по настройке.
Если нет, объясните причину.
Спасибо.
Да, это возможно.
- Найдите «multisite» на этом форуме.
- Настройте основной сайт как провайдера DiscourseConnect.
- Настройте сайты на поддоменах как клиенты DiscourseConnect.