我有一个现有的Rails应用程序,使用devise作为用户身份验证。我添加了一个Discourse论坛,一切顺利,并且它位于子域名上。我已经阅读了https://meta.discourse.org/t/official-single-sign-on-for-discourse/13045上的帖子,但仍然不知道在现有的Rails网站上登录后该怎么处理devise方面的事情。目前这是我理解的流程:
步骤1:用户访问子域名上的Discourse论坛。用户需要登录,因此点击登录按钮。
步骤2:用户被发送到现有的Rails网站上的登录页面。
步骤3:用户在Rails网站上登录。
步骤4:用户应该被重定向到已登录的Discourse论坛子域名。
我的问题是-当用户在第3步登录时,我需要做什么才能使他们被重定向回子域名?有人成功实现了吗?我在那个教程页面上看到了这段代码片段:
class DiscourseSsoController < ApplicationController
def sso
secret = "MY_SECRET_STRING"
sso = SingleSignOn.parse(request.query_string, secret)
sso.email = "user@email.com"
sso.name = "Bill Hicks"
sso.username = "bill@hicks.com"
sso.external_id = "123" # unique to your application
sso.sso_secret = secret
redirect_to sso.to_url("http://l.discourse/session/sso_login")
end
end
这是我需要在现有的Rails应用程序中添加的内容吗?我猜测解析器会检查URL中是否有该信息,如果有,则在完成设备登录过程后重定向,否则它将像往常一样工作。我应该把这段代码放在设备文件的哪个位置?