Game Dev - Registrazione Utente e gestione DB (consigli necessari)

Ciao a tutti, spero stiate bene.

Questa è solo una richiesta generale di aiuto per avere indicazioni: vogliamo utilizzare la registrazione / gestione utenti / database di Discourse per registrare gli stessi dettagli nel nostro database di gioco esterno (in modo che il giocatore possa utilizzare gli stessi dettagli di accesso per accedere al gioco).

Attualmente sto esaminando il repository git per farmi un’idea di come funzionano le cose, ecc.

Il piano generale, come menzionato, è che quando un utente si registra sul forum, Discourse registrerà i dettagli dell’utente nel nostro database di gioco (ospitato su un altro VPS). Se aggiornano la password o l’email, anche questi verranno riflessi nel nostro database SQL.

Ho già un forum Discourse self-hosted attivo da qualche ora, quindi sto ancora imparando Discourse al momento.

Quindi la mia domanda è: c’è qualche punto in particolare in Discourse che dovremmo esaminare per iniziare a lavorare su questo?

1 Mi Piace

Le parole magiche sono “DiscourseConnect” e “identity provider” :wink:

4 Mi Piace

Ottimo, grazie per avermelo inviato!

3 Mi Piace

Sembra che SSO / DiscourseConnect richieda la convalida delle email da parte di terzi.

Questo è un problema per la nostra particolare configurazione, poiché vorremmo che Discourse gestisse la convalida delle email e la gestione degli account come al solito, ma passasse solo le informazioni del database al nostro DB di gioco.

Quindi, in sostanza, l’inverso di ciò che fa SSO.

In parole povere: Discourse deve gestire tutto, io ho solo bisogno di ottenere alcune informazioni dell’utente dal suo DB.

Quando si utilizza Discourse come provider di identità come suggerito da Richard, Discourse gestirà la convalida dell’e-mail per te.

Quando l’utente attraversa il flusso SSO su Discourse e poi torna al tuo sito web, puoi utilizzare la risposta che Discourse aggiunge come stringa di query incorporata al parametro sso, contenente e-mail, nome utente, nome, gruppi, ecc. (ma non la password, quella non sarebbe una buona idea), che puoi estrarre e convalidare correttamente utilizzando il sig fornito.

2 Mi Piace

Hm okay.

Quindi, come accennato, non è un sito Web a cui Discourse invierà le informazioni.

È un server di gioco, alias solo un VPS con MySQL in esecuzione.

Il vecchio flusso di lavoro era questo:
Unity popola le tabelle SQL quando gli utenti “registrano un account”.

Quello che sto cercando di fare è usare Discourse come provider di registrazione e gestione dell’account.

Cioè, si registrano con Discourse e usano queste informazioni per accedere al server di gioco (tramite il client Unity).

Quindi ho bisogno di un modo per trasferire in modo affidabile i dati utente di Discourse al database MySQL.
(Sono entrambi sulla stessa macchina).

Per questo abbiamo impostato un wrapper di dati esterni per Postgres → Mysql, e quindi trigger per popolare in modo appropriato.

Quindi, quando l’utente inserisce la sua email e password (di Discourse) in gioco, sarà in grado di accedere, in teoria.

L’altro problema di cui ho recentemente letto è il hashing delle password utilizzato da Discourse (che è una buona cosa per molte ragioni), ma significa che gli hash sono univoci, quindi non si può fare in quel modo.

Quindi, di nuovo, non c’è un sito Web per l’SSO, solo Discourse e un altro VPS che esegue il server di videogiochi a cui i client si connettono.