Connexion à Discourse par jeton de cookie

Nous utilisons Discourse comme site communautaire et nous avons un site Web officiel.
Nous espérons donc que Discourse pourra être connecté automatiquement après que l’utilisateur se soit connecté à notre site Web officiel.
Notre site Web officiel ajoutera un cookie lorsque l’utilisateur se connectera et nous utilisons le partage de cookies dans Discourse. Discourse obtient l’autorisation dans le cookie et obtient les informations de l’utilisateur pour se connecter.
L’implémentation du code est la suivante :

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
defaut_current_user_provider.rb
 def log_off_user(session, cookie_jar)
    ……
   cookie_jar.delete('authorization')
 end

Je me demande s’il y a quelque chose qui ne va pas dans ma démarche ? Existe-t-il une meilleure façon ?

C’est peu sûr. Un utilisateur pourrait falsifier le cookie dans son navigateur et se connecter en tant qu’une autre personne.

Vous devriez utiliser DiscourseConnect à la place.

3 « J'aime »

Merci pour votre suggestion. Je suis novice sur Discourse. Si j’utilise DiscourseConnect à la place, dois-je avoir une API web pour retourner un nonce dont DiscourseConnect a besoin ?

1 « J'aime »