Simplified GitHub Login for a Ruby Web App

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 gem来简化GitHub的这个操作。下面是它的工作原理。

首先,你需要在GitHub上注册你的应用程序,就像这个页面所解释的那样。下面是在Sinatra中的使用方法,但你也可以在任何框架中使用类似的方法。

首先,在应用程序启动之前,在全局空间的某个地方:

接下来,对于所有的网页,我们需要解析一个 cookie,如果它存在的话,并将其转换为一个用户。

如果glogin cookie存在并包含有效数据,本地变量@user将被设置为类似以下内容:

接下来,我们需要一个GitHub OAuth回调的URL:

最后,我们需要一个登出的URL:

还有一件事是你需要用于前端页面的登录网址。在这里:

对于单元测试,您可以将空字符串作为secret传递给GLogin::Cookie::OpenGLogin::Cookie::Closed,这样加密将被禁用:从cookie中获取的任何内容都将被信任。为了进行测试,提供一个查询字符串中的用户名将会很方便,就像这样:

为了使其生效,建议您添加此行(查看zold-io/wts.zold.io中的工作原理)。

我在Sinatra上的sixnines0pddZold网络应用中使用这个gem(都是开源的)。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 10:57

sixnines availability badge   GitHub stars