我们使用 Discourse 作为社区站点,并且有一个官方网站。
因此,我们希望用户在登录官方网站后,能够自动登录 Discourse。
我们的官方网站会在用户登录时添加一个 cookie,并且我们在 Discourse 中使用了 cookie 共享。Discourse 在 cookie 中获取授权,并获取用户信息以登录。
代码实现如下:
# application_controller.rb
before_action :check_cookie_login
def check_cookie_login
if !current_user && cookies[:authorization]
external_id = get_external_id cookies[:authorization]
cookie_log_on_user external_id
end
end
# current_user.rb
def cookie_log_on_user(external_id)
sso_record = SingleSignOnRecord.find_by(external_id: external_id)
user = sso_record.user
log_on_user(user)
end
# defalt_current_user_provider.rb
def log_off_user(session, cookie_jar)
……
cookie_jar.delete('authorization')
end
我想知道我这样做有什么不对吗?有没有更好的方法?