Accesso a Discourse tramite token cookie

Utilizziamo Discourse come sito della nostra community e abbiamo un sito web ufficiale.
Quindi, speriamo che Discourse possa essere automaticamente collegato dopo che l’utente si è collegato al nostro sito web ufficiale.
Il nostro sito web ufficiale aggiungerà un cookie quando l’utente si collega e utilizziamo la condivisione dei cookie in Discourse. Discourse ottiene l’autorizzazione nel cookie e ottiene le informazioni dell’utente per accedere.
L’implementazione del codice è la seguente:

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

Mi chiedo se ci sia qualcosa di sbagliato nel mio modo di fare. Esiste un modo migliore?

Questo è insicuro. Un utente potrebbe manomettere il cookie nel proprio browser ed effettuare l’accesso come qualcun altro.

Dovresti usare DiscourseConnect invece.

3 Mi Piace

Grazie per il tuo suggerimento. Sono un principiante per Discourse. Se invece usassi DiscourseConnect, avrei bisogno di un’API web per restituire un nonce di cui DiscourseConnect ha bisogno?

1 Mi Piace