هذه هي الطريقة التي نفعل بها ذلك على منصة الاستضافة الخاصة بنا؛ لدينا طبقة موازن تحميل تضبط X-Forwarded-Proto لـ nginx+Discourse الذي يستهلكها.
لا نحتاج إلى أي حيل إضافية لجعله يعمل - لست متأكدًا مما يحدث خطأ لديك هنا.
هذا هو بالضبط ما يحدث:
def self.generate_sso(return_path = "/", secure_session:)
sso = new(secure_session: secure_session)
sso.nonce = SecureRandom.hex
sso.register_nonce(return_path)
sso.return_sso_url = Discourse.base_url + "/session/sso_login"
sso
end
و base_url يأتي من:
def self.base_protocol
SiteSetting.force_https? ? "https" : "http"
end
def self.base_url_no_prefix
"#{base_protocol}://#{current_hostname_with_port}"
end
def self.base_url
base_url_no_prefix + base_path
end