Здравствуйте,
Я пытаюсь реализовать процесс входа в Discourse из моего фронтенд-приложения. Как это лучше сделать?
Спасибо ![]()
Здравствуйте,
Я пытаюсь реализовать процесс входа в Discourse из моего фронтенд-приложения. Как это лучше сделать?
Спасибо ![]()
Это обычное решение:
Если вы управляете пользователями только в Discourse, то, вероятно, проще будет использовать кнопку перенаправления!
Спасибо за ваш ответ! Но могу ли я действительно открыть что-то вроде iframe, чтобы пользователи могли выбрать способ аутентификации?
Нет, iframes не поддерживаются.
Либо вы хотите управлять учетными записями пользователей на вашем родительском сайте, а затем аутентифицироваться с помощью Discourse Connect, либо просто добавить ссылку на ваш Discourse.
Можете ли вы сослаться на маршрут входа, чтобы сразу предложить им это? /login
Я не совсем понимаю, как этим пользоваться. То есть, я представляю кнопку входа на моём сайте, и пользователю нужно выбрать способ аутентификации, верно? Имеется в виду, какой может быть сценарий для этого случая?
Зачем вам нужно, чтобы они входили в систему на вашем сайте? Вы управляете учетными записями пользователей там?
Я хочу иметь возможность создавать посты/темы с фронтенда, поэтому для этого сначала нужна аутентификация. Логично?
OK, это имеет смысл. По сути, вы говорите: «Я хочу переписать части интерфейса и общаться только через API»?
Я не думаю, что здесь вы получите много бесплатной поддержки для этого, но посмотрите на:
https://meta.discourse.org/t/help-with-authenticating-user-via-api/178355/2?u=merefield
Существуют уже реализованные проекты для этого, особенно в виде приложений; возможно, стоит изучить их, например:
Также был Fig, но он ещё не с открытым исходным кодом:
Однако обратите внимание на чрезвычайно высокий уровень первоначальной разработки и поддержки, который требуют подобные решения. Я считаю, что два лучших примера были заброшены (?)
В качестве альтернативы рассмотрите возможность создания вашего сайта как отдельного экземпляра Discourse (с помощью плагинов и компонентов тем), чтобы избежать необходимости переписывать многие элементы интерфейса.
Я использую Discourse в качестве провайдера идентификации, и это работает отлично. Вы можете использовать его для создания ссылки «Войти» на вашем сайте, которая перенаправит пользователя на ваш экземпляр Discourse. Если пользователь уже вошёл в систему или завершит процесс входа, он будет перенаправлен на return_sso_url, указанный в полезной нагрузке, вместе с учётными данными и информацией о пользователе. Этот return_sso_url может быть маршрутом на вашем сайте, который сохраняет аутентифицированную сессию удобным для вас способом (например, в виде cookie-файла сессии) после получения полезной нагрузки от Discourse.
Кстати, Lexicon не заброшен и продолжает активно разрабатываться.
@Roie_Natan, если вы знакомы с JavaScript, вы можете изучить исходный код Lexicon, чтобы понять, как это было реализовано.
Однако, как отметил @merefield, существуют уже опубликованные материалы, которые могут помочь вам разобраться в этом.
Вот один ресурс, посвящённый сессиям пользователей: Storing extra data about a user's session - #3 by sam
Также вам может оказаться полезной схема авторизации из приложения @pmusaraj:
Отлично! Спасибо за исправление.