2010-11-26 1 views
6

In Lift, l'intero costrutto ProtoUser è abbastanza impressionante, sorprendente quello che fa per te, la maggior parte dei vantaggi (come molte cose in Lift, sfortunatamente) non documentate.Alternativa a MegaProtoUser in Lift

C'è un solo problema: contiene dati di cui non ho bisogno e anche dati che non desidero. Ad esempio, desidero che il mio utente effettui il login con un nickname e non ho bisogno di conoscere la sua posizione, le impostazioni locali o il nome/cognome. Ma alla registrazione, ho bisogno di informazioni che non vengono visualizzate nella pagina di registrazione standard.

La mia prima idea sarebbe quella di riscrivere il mio tratto di utente, ma poi avrei dovuto riscrivere tutto il codice di sessione, l'autorizzazione, ecc. Esiste già un'alternativa? Oppure è possibile modificare lo ProtoUser per avere le mie pagine di accesso e di accesso, nonché solo i miei dati necessari?

Grazie per l'ascolto.

+0

Dai un'occhiata a questo recente discussione sul gruppo liftweb http://groups.google.com/group/liftweb/browse_thread/thread/cf396f89a4304beb/e74683995641e67e?lnk=gst&q=ProtoUser#e74683995641e67e –

risposta

3

Non sono sicuro che ci sia un modo semplice per rimuovere uno dei campi in ProtoUser, ma un'opzione potrebbe essere quella di esaminare il metodo fieldOrder in ProtoUser, credo che definisca i campi utilizzati da protoUser. Per quanto riguarda il segno di problema v'è un metodo signUpFields che consente di ignorare quali campi si richiedono a segno in su come in modo

override def signupFields = email :: userName :: password :: Nil

Supponendo che si definisce il proprio oggetto nomeUtente. Esiste anche un metodo simile per editFields, questo in realtà non risolve il problema della rimozione dei campi di cui tiene traccia, ma forse fieldOrder potrebbe fare qualcosa, un altro suggerimento che vorrei fare è guardare all'origine di Proto User e vedere se può forse sovrascrivere gli oggetti mappati e fare in modo che il mapper li ignori in qualche modo. Questo è ancora solo un modo per aggirare l'utente di Proto per evitare di dover riscrivere molto del codice che contiene.

+0

Questo sembra funzionare bene per la iscriversi, ma quando si modifica l'utente, ottengo gli stessi campi standard di prima. E la registrazione funziona sempre e solo con l'e-mail ... – Lanbo

+0

sì, esiste un metodo separato chiamato editFields per la pagina utente di modifica. Per quanto riguarda l'accesso con il nome utente, non so come cambiarlo. Dovresti scavalcare alcuni dei metodi di proto-utente per questo. – RedbeardTheNinja