2010-11-26 7 views
6

Im Lift ist das ganze ProtoUser Konstrukt ziemlich genial, erstaunlich was es für Sie leistet, die meisten Vorteile (wie viele Dinge im Lift leider) undokumentiert.Alternative zum MegaProtoUser im Lift

Es gibt nur ein Problem: Es hält Daten, die ich nicht brauche und sogar Daten, die ich nicht will. Zum Beispiel möchte ich, dass sich mein Benutzer mit einem Spitznamen anmeldet, und ich muss seinen Standort, sein Gebietsschema oder seinen Vor-/Nachnamen nicht kennen. Bei der Anmeldung benötige ich jedoch Informationen, die auf der Standard-Anmeldeseite nicht angezeigt werden.

Meine erste Idee wäre, meine eigene User-Eigenschaft neu zu schreiben, aber dann müsste ich den gesamten Session-Code, die Autorisierung usw. neu schreiben. Gibt es schon eine Alternative? Oder ist es möglich, die ProtoUser zu ändern, um meine eigenen Anmeldungs- und Anmeldeseiten sowie nur meine notwendigen Daten zu haben?

Danke fürs Zuhören.

+0

Sehen Sie sich diese aktuelle Diskussion über die liftweb Gruppe aus http://groups.google.com/group/liftweb/browse_thread/thread/cf396f89a4304beb/e74683995641e67e?lnk=gst&q=ProtoUser#e74683995641e67e –

Antwort

3

Ich bin mir nicht sicher, ob es einen einfachen Weg gibt, irgendwelche Felder in ProtoUser zu entfernen, aber eine Möglichkeit wäre, die fieldOrder-Methode in ProtoUser zu betrachten, glaube ich, dass die Felder definiert, die ProtoUser verwendet. In Bezug auf die Anmelde Problem ist ein Verfahren signUpFields, die Sie überschreiben können, welche Felder Sie bei der Anmeldung benötigen bis wie so

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

Vorausgesetzt, dass Sie Ihren eigenen Benutzernamen Objekt definieren. Es gibt auch eine ähnliche Methode für editFields, das löst eigentlich nicht das Problem, Felder zu entfernen, die es verfolgt, aber vielleicht kann fieldOrder etwas tun, ein anderer Vorschlag, den ich hätte, wäre, die Quelle von Proto-Benutzer zu sehen und zu sehen, ob Sie kann die abgebildeten Objekte möglicherweise überschreiben und sie vom Mapper irgendwie ignorieren lassen. Dies ist immer noch eine Möglichkeit, um Proto User herum zu arbeiten, um zu vermeiden, dass viel Code neu geschrieben werden muss.

+0

Dies scheint alles in Ordnung für die Arbeit Anmeldung, aber beim Bearbeiten des Benutzers, bekomme ich die gleichen Standardfelder wie zuvor. Und Logging funktioniert immer nur mit der E-Mail ... – Lanbo

+0

yea gibt es eine separate Methode namens editFields für die Bearbeitungsseite. Soweit ich mich mit dem Benutzernamen anmelde, weiß ich nicht, wie ich das ändern soll. Sie müssten einige der Methoden von Proto-Benutzer dafür überschreiben. – RedbeardTheNinja