Автоматический вход на сайт Discourse

Что именно вы хотите сделать?

У меня есть мобильное приложение. Discourse используется как источник аутентификации. Для входа в мобильное приложение пользователю необходимо ввести своё имя пользователя и пароль. Затем я выполняю API-запрос входа в Discourse для аутентификации пользователя.

Теперь в мобильном приложении есть ссылки на форум Discourse. Я хочу, чтобы пользователи автоматически входили на форум при нажатии на эти ссылки. Сейчас это создаёт очень плохой пользовательский опыт: пользователям приходится вводить пароль дважды — сначала при входе в приложение, а затем при входе на форум.

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

Когда это должно быть выполнено?
1 неделя.

Какой ваш бюджет в долларах США, который вы готовы предложить за эту задачу?
300$

2 лайка

Это невозможно? Или предложение слишком низкое? :thinking:

Привет :slight_smile:

На самом деле это немного сложнее, чем может показаться.

Механизм входа по электронной почте работает следующим образом: когда вы нажимаете кнопку «По электронной почте» в модальном окне входа, для конкретного пользователя генерируется токен, который сохраняется в email_tokens. Этот токен можно увидеть в ссылке (строка из цифр и букв):

http://localhost:3000/session/email-login/69c4953ff0726b5f4c2b26c1e3563b79

Вам нужно генерировать такой токен для ссылок в вашем приложении каждый раз, когда пользователь входит в систему. Насколько я понимаю (?), эта функциональность пока не доступна через API, поэтому сначала вам нужно будет создать соответствующий эндпоинт.

Этот эндпоинт должен быть защищён аутентификацией. Вам потребуется способ обработки этого в вашем приложении. Возможно, у вас это уже реализовано?

Затем нужно будет учесть такие моменты, как срок действия токена. Как долго токен должен оставаться валидным? Как получить новый и обновить ссылки после истечения срока действия?

Кажется, что для решения этой задачи должен существовать более подходящий подход, чем адаптация этой функции постфактум.

Да. Я как раз сам об этом думал. И раз вход по электронной почте уже реализован, это тоже должно быть возможно. Не знаю, как именно это будет реализовано. Возможно, это стоит сделать через плагин. Если вы сможете это сделать, дайте знать.

Да, аутентификация осуществляется через API входа в Discourse. И с этим проблем нет.

У ссылки «Вход по электронной почте» есть значение срока действия? Мы можем использовать то же самое или что-то подобное.
Другие вещи, такие как получение нового токена, будут обрабатываться самим приложением.

Да, срок действия токена электронной почты определяется настройкой сайта «Время жизни токена электронной почты в часах».

Таким образом, по сути, вам нужен плагин, который добавляет конечную точку для создания и возврата токена электронной почты для пользователя, и вы будете вызывать его регулярно по истечении срока действия токенов?

Это решит мою задачу.

Также, поскольку я хочу перенаправлять пользователя на конкретную тему, было бы идеально, если бы можно было добавить ID темы или ссылку, и после входа пользователь автоматически перенаправлялся бы туда.

Не лучше ли было бы сделать так, чтобы ссылки в приложении указывали на ваш собственный бэкенд. При клике на ссылку в этот момент создается соответствующая ссылка, и клиент перенаправляется каким-то образом в нужное место.
Это означало бы, что вам не нужно генерировать ссылки для аутентификации до того, как пользователь на них нажмет.

1 лайк

Да, это, вероятно, более эффективно с точки зрения приложения. Хотя, думаю, конечная точка в Discourse останется прежней.

1 лайк

При таком подходе, как мы можем убедиться, что пользователь аутентифицирован?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.