有可能吗?

您好,各位会员!
希望大家都安好。
我搭建了一个 Discourse 论坛,并尝试将其与我的网站(ASP.NET)连接。
起初,我使用了 Discourse-Connect 并成功了,但是使用它时用户无法在论坛中登录和注册。
因此,我尝试使用 Discourse-Api 登录论坛,但未能成功。
我阅读了许多文档,但没有找到正确的解决方案。
请问有人能帮助我解决这个问题,或者告诉我解决方案的可能性和正确的方法吗?
谢谢!

您有两种选择:

  • 设置 DiscourseConnect,以便用户在您的网站上注册和登录,当他们尝试登录您的论坛时将自动完成。这是常规设置。如果您这样配置,那么所有的注册和登录都将在您的网站上进行。论坛上的用户名/密码登录和注册将被禁用。

  • 设置 DiscourseConnect,以便用户在您的论坛上注册和登录,当他们尝试登录您的网站时将自动完成。这被称为将 Discourse 设置为 DiscourseConnect 提供者,具体方法可以在此处找到。

3 个赞

感谢您快速回复。

有没有不使用 DiscourseConnect 的可能性?

为什么您不想使用它?

当然,您可以自己实现一些东西,但这将抛弃 DiscourseConnect 在构建过程中积累多年的经验。因此,在您决定承担这项艰巨的任务之前,您必须确定自己构建东西而不是使用现有东西的充分理由。

5 个赞

当然,我知道 DiscourseConnect 是一个很棒的功能。
但我的目的是在 Discourse 论坛上进行本地登录和注册。
所以我尝试使用 Discourse API。
难道 Discourse API 没有这方面的可能性吗?
谢谢。
此致

好的,如果您想在 Discourse 上进行本地登录和注册,请告诉我您希望与您的网站进行何种集成。

2 个赞

我的目的是实现以下功能:

  1. 如果用户登录了我的网站,当用户访问论坛时,用户将自动登录论坛。
  2. 并且用户可以在论坛中登录和注册。
  3. 如果用户登录了论坛,当用户访问我的网站时,用户将自动登录我的网站。
    使用 DiscourseConnect,我可以实现 1) 和 3),但无法实现 2)。
    但 2) 对我们来说非常重要。

如果您允许用户在两个地方注册,事情很快就会变得一团糟,这就是为什么您必须做出选择,用户要么在您的网站上注册,要么在您的论坛上注册,但不能同时注册。

这对您来说为什么如此重要?

3 个赞

感谢您的帮助。
但是,我的老板想要它。
请检查我的表现。
我尝试使用 Discourse API 进行如下操作:

  1. 调用 GET ‘/session/csrf’ 并获取 csrf 令牌和 cookie
  2. 调用 POST ‘/session’,请求头包含:‘X-CSRF-Token’=‘csrf 令牌’, ‘Cookie’ = ‘获取的 cookie’,数据包含:login, password, timezone, second-factor-method, authenticity-token
  3. 调用 POST ‘/login’,请求头包含:‘Cookie’=‘从 /session 获取的 cookie’
    数据包含:username, password, redirect

所有日志与 Discourse 登录工作流程相同。
但是当我重定向到 discourse 论坛时,用户没有登录。

如何解决这个问题?哪里错了?

再次感谢您的帮助。

附注:我的服务器是 Ubuntu Nginx 服务器。

那么你需要向你的老板解释,让用户在多个地方注册是一个非常糟糕的主意。事情会变得一团糟。向他解释当你在网站上使用用户名A注册,在论坛上使用用户名B注册,但使用相同的电子邮件地址时会发生什么!或者当用户只在网站上更改密码,或者只在 Discourse 上更改密码时会发生什么。那样事情就会出问题!

你所做的会将你的服务器以该用户的身份登录到论坛。它不会为用户设置会话 cookie,因此不会将用户登录到论坛。

此外,你显然拥有该用户的明文密码。这是一个非常糟糕的主意。你应该始终存储密码的哈希值(单向加密),而不是明文密码。当你的数据库被黑客入侵时,攻击者将知道你所有用户的密码。这也是可以向你的老板解释的另一件好事。

我已经给了你三个好理由,你可以用来劝说你的老板采取不同的做法。这只会导致巨大的问题。我无法帮助你解决这个问题,因为它行不通。即使你解决了这个问题,它也只能在短期内奏效。

6 个赞

明白了。
我会向我的老板解释这些。
非常感谢。
我想和你进一步讨论(当然不是关于这个)。
此致

请再帮我一个忙。
我的论坛服务器有一个主域名和几个子域名。
我是否可以使用一个数据库在每个域上构建多个 Discourse 论坛?
并且我能这样构建吗?

  • 在主域名上,可以本地登录和注册。
  • 在子域名上,使用 DiscourseConnect 连接到我的网站。
    如果可能,请指导我如何构建。
    如果不可能,请告诉我原因。
    谢谢。

是的,这是可能的。

3 个赞