通过 API 确认正确的用户名和密码组合?

大家好,

我需要一些关于如何使用现有的 Discourse 用户名和密码让用户登录到远程网站的指导。

我认为我不需要 SSO……原因如下。

首先,介绍一下我现有的使用场景以及为什么我不喜欢它。

我目前有一个网站 https://www.example.com,上面有一个登录按钮。

当用户点击登录按钮时,系统会要求他们输入现有的 Discourse 用户名和电子邮件地址(注意:是用户名 + 电子邮件,而不是密码)。

然后,我将这两条信息用于向以下地址发起 API GET 请求:

"https://mydiscourse.comm/admin/users/list/all.json?email=" + strEmail

在我发起的此 API 调用中,我在请求头中包含了“系统”用户账户名称以及该系统用户关联的 API 密钥。

如果找到匹配的电子邮件地址,我会将用户在表单中提供的用户名与该电子邮件地址对应的 API 响应中返回的用户名进行比较。

如果匹配,我就认为该用户已在我的网站 https://www.example.com 上登录。

我大约在三、四年前构建了这套系统,至今仍然运行良好。

但是……

  1. 让用户在登录表单中输入“用户名 + 电子邮件”组合非常令人困惑
    – 大多数人总是习惯输入“用户名 + 密码”
    – 尽管我在表单各处都提供了大量说明,但人们仍然会自然地弄错

  2. 这种方式不够安全
    – 只要知道用户名和电子邮件地址,凭借这两项(微不足道的)信息,就可以非常容易地以该用户的身份登录到 https://www.example.com

我希望用户点击 https://www.example.com 上的登录按钮后,输入他们现有的 Discourse 用户名和密码(而不是用户名 + 电子邮件!)。

然后,我的网站 example.com 会向 Discourse 发起一个快速的 API 请求,确认提供的用户名和密码组合是否正确,并返回该用户现有的 Discourse 用户 ID。

希望我的描述足够清晰:grimacing

我已经查阅了所有 API 文档,但无论如何也找不到一个简单的“登录”端点?:thinking:

我并不需要在 Discourse 本身中让用户登录或登出,我只需要确认他们的用户名和密码是否正确。

任何提示、指导、链接或建议都非常欢迎:blush

没有 API 路由可以返回用户的原始密码,所以我认为这种方法行不通。根据你的描述,你似乎想将 Discourse 用作你网站的 SSO 提供商。这是可以实现的。有关如何设置的详细信息,请访问:https://meta.discourse.org/t/using-discourse-as-a-sso-provider/32974。

4 个赞

谢谢 @simon —— 快速浏览了一下那个链接,感觉它可能正是我需要的。

我开始阅读了 :nerd_face:

1 个赞

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