The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
Вы знаете, что такое вход через OAuth, не так ли? Это когда ваши пользователи нажимают “войти” и перенаправляются на Facebook, Twitter, Google или другой веб-сайт, который их идентифицирует. Затем они возвращаются на ваш веб-сайт, и вы знаете, кто они. Это очень удобно для них. Это также удобно для вас, так как вам не нужно реализовывать функциональность входа и хранить их учетные данные в базе данных. Я создал простой Ruby-модуль, чтобы упростить эту операцию только для GitHub. Вот как это работает.
Сначала вам нужно зарегистрировать свое приложение в GitHub, как объясняется на этой странице. Вот как это работает с Sinatra, но вы можете сделать что-то подобное в любом фреймворке.
Сначала где-то в глобальной области, перед запуском приложения:
Затем для всех веб-страниц нам необходимо разобрать cookie, если оно существует, и преобразовать его в пользователя:
Если входящий cookie glogin
содержит действительные данные, локальной переменной @user
будет присвоено что-то подобное:
Далее, нам нужен URL для обратного вызова GitHub OAuth:
Наконец, нам понадобится URL для выхода из системы:
Еще одним важным моментом является URL-адрес для входа, который вам понадобится на вашей главной странице. Вот он:
Для модульного тестирования вы можете просто передать пустую строку в качестве secret
для GLogin::Cookie::Open
и GLogin::Cookie::Closed
, и шифрование будет отключено: все, что поступает из куки, будет считаться доверенным. Для тестирования удобно передавать имя пользователя в строке запроса, например:
Для этого рекомендуется добавить эту строку (см. работу на zold-io/wts.zold.io).
Я использую этот gem в веб-приложениях sixnines, 0pdd и Zold на основе Sinatra (все с открытым исходным кодом).
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 10:57