تسجيل الدخول إلى Discourse بواسطة رمز ملف تعريف الارتباط

نحن نستخدم 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

أتساءل عما إذا كان هناك أي خطأ في قيامي بذلك؟ هل هناك طريقة أفضل؟

هذا غير آمن. يمكن للمستخدم التلاعب بالملف التعريفي في متصفحه وتسجيل الدخول كشخص آخر.
يجب عليك استخدام DiscourseConnect بدلاً من ذلك.

3 إعجابات

شكراً على اقتراحك. أنا مبتدئ في Discourse. إذا استخدمت DiscourseConnect بدلاً منه، هل أحتاج إلى واجهة برمجة تطبيقات ويب لإرجاع nonce التي يحتاجها DiscourseConnect؟

إعجاب واحد (1)