نحن نستخدم Discourse كموقع مجتمعنا ولدينا موقع ويب رسمي.
لذلك، نأمل أن يتم تسجيل الدخول إلى Discourse تلقائيًا بعد تسجيل دخول المستخدم إلى موقعنا الرسمي.
سيضيف موقعنا الرسمي ملف تعريف ارتباط عند تسجيل دخول المستخدم ونستخدم مشاركة ملفات تعريف الارتباط في Discourse. يحصل Discourse على التفويض في ملف تعريف الارتباط، ويحصل على معلومات المستخدم لتسجيل الدخول.
تنفيذ الكود كالتالي:
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
default_current_user_provider.rb
def log_off_user(session, cookie_jar)
……
cookie_jar.delete('authorization')
end
أتساءل عما إذا كان هناك أي خطأ في قيامي بذلك؟ هل هناك طريقة أفضل؟