2013-01-19 5 views
5

Ho iniziato a integrare SecureSocial nella mia app di riproduzione/scala, ma non mi piacciono molto tutti i reindirizzamenti tra le diverse visualizzazioni.Utilizzo di servizi di sicurezza secernose senza utilizzare le sue viste

esempio: prova ad accedere dalla sua pagina di accesso predefinita e se inserisci una pass errata verrai reindirizzato a una pagina diversa (url) ma con lo stesso modulo di accesso. l'unica cosa che è diversa è che c'è un messaggio di errore ...

Voglio un semplice modulo di login (utente/provider di password) all'angolo della mia pagina principale che invia i suoi dati usando ajax, questi dati sono validati sul server e viene fatta una risposta per visualizzare i messaggi di errore/s o modificare window.location. Accanto a questo modulo inserirò un link per accedere a una pagina di accesso più avanzata che aggiunge l'opzione di utilizzare altri provider come fb/twitter ecc. Ma da quella pagina voglio anche usare ajax per inviare i dettagli e ottenere la risposta.

Ho cercato di accedere alla fonte SecureSocial ma ho perso un po '.

Qualcuno può darmi un'idea di come usare SecureSocial ma senza utilizzare nessuna delle sue viste?

NOTA: non sono interessati a personalizzare il loro parere, non è solo un problema di CSS/design, voglio gestire i dati di login Ajaxly e non con normale invio di un modulo seguito da redirect ...

risposta

2

Dopo un po 'di più rovistando nel codice SecureSocial ho capito meglio come funziona.

È possibile utilizzare separatamente qualsiasi provider elencato nel file play.plugins per autenticare le informazioni dell'utente dal proprio codice di accesso/autenticazione. assicurati di inviare i parametri corretti richiesti dal provider.

Mi è piaciuto il modo in cui la classe ProviderController di SecureSocial ha deciso in modo dinamico quale provider utilizzare, in base a un parametro. Ma non mi piacevano le risposte che ha fatto - reindirizzare .. Volevo rispondere a una richiesta Ajax con alcuni dati e lasciare che il lato client js gestirlo.

Questa è la mia soluzione:

praticamente copia tutto il codice ProviderController al mio file Auth.scala (un controller). Modificato i reindirizzamenti relativi a "caso ex, caso _", ha mantenuto il reindirizzamento su autenticazione riuscita quando aggiunge la chiave di sessione SecureSocial relativa all'utente. Rimosso tutti i percorsi relativi a SecureSocial dal mio file di rotte. Metti un campo nascosto aggiuntivo con il tipo di accesso (userpass/google/fb/etc ...) e configurato il mio login ajax per inviarlo insieme al post al mio controller di Auth.

Se avete bisogno di ulteriori informazioni, commentate qui e modifico la risposta.

+0

Sono interessato ... in pratica, perché sto visualizzando la schermata di accesso in un popup e se l'utente accede o annulla non voglio ricaricare la pagina (e perdere gli input dell'utente) ... Voglio solo chiudere il popup e aggiornare lo stato di login se necessario. Credo di aver bisogno di un login Ajax per raggiungere questo obiettivo. – Ixx

+0

Ci scusiamo per il commento un po 'in ritardo. Sì, hai bisogno di un lavoro sicuro e sicuro con le normali richieste e reindirizzamenti delle pagine ... alla fine ho smesso di usarlo e ho creato il mio paio di classi di auth ispirate al modulo auth20. Non è troppo complicato ed è più flessibile in questo modo :) – samz

+0

Ho esattamente lo stesso problema. Voglio rimuovere tutti i modelli HTML dalla mia applicazione Play (compresi i modelli personalizzati SecureSocial) e sostituirli con JSON/JavaScript. Ho iniziato a rielaborare un po 'le fonti SecureSocial ...ma dal momento che ho solo bisogno di un provider di nome utente/password penso valga la pena creare la mia soluzione. Potresti fornirmi alcuni suggerimenti su come hai risolto il problema? C'è qualche buon tutorial o esempio che potrebbe aiutarmi nella scrittura di un'autentica API? Grazie. – j3d