Альтернатива MegaProtoUser в лифте - PullRequest
6 голосов
/ 26 ноября 2010

В Lift вся конструкция ProtoUser довольно удивительна, удивительно, что она делает для вас, большинство преимуществ (как, впрочем, и многих других вещей в Lift) недокументировано.Он содержит данные, которые мне не нужны, и даже данные, которые мне не нужны.Например, я хочу, чтобы мой пользователь входил по псевдониму, и мне не нужно знать его местоположение, локаль или имя / фамилию.Но при регистрации мне требуется информация, которая не отображается на стандартной странице регистрации.

Моей первой идеей было бы переписать собственную черту пользователя, но тогда мне пришлось бы переписатьвесь сессионный код, авторизация и т. д. Уже есть альтернатива?Или можно изменить ProtoUser, чтобы у меня были собственные страницы регистрации и входа, а также только мои необходимые данные?

Спасибо за прослушивание.

1 Ответ

3 голосов
/ 08 апреля 2011

Я не уверен, есть ли какой-либо простой способ удалить какое-либо из полей в ProtoUser, но одним из вариантов будет просмотр метода fieldOrder в ProtoUser, я считаю, что он определяет поля, которые использует protoUser. Что касается проблемы с регистрацией, существует метод signUpFields, который позволяет вам переопределить поля, которые вам требуются при регистрации, например:

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

Предполагается, что вы определяете свой собственный объект userName. Существует также аналогичный метод для editFields, который на самом деле не решает проблему удаления полей, которые он отслеживает, но, возможно, fieldOrder мог бы что-то сделать, еще одно предложение, которое я хотел бы, это посмотреть на источник Proto User и посмотреть, может возможно переопределить сопоставленные объекты и заставить маппер игнорировать их как-то. Это все еще просто способ обойти Proto User, чтобы избежать необходимости переписывать большую часть кода, который он содержит.

...