объекты, которые используют пользователя spring-security по умолчанию и спящий режим, нуждаются в пользовательской реализации пользователя

У меня работает базовая настройка безопасности Spring/Logout, у меня есть объект MyObject, который имеет атрибут created_by с user_id пользователя, создавшего объект. У меня также работает вызов REST, так что я получаю объект пользователя, который в настоящее время вызывает функцию списка в качестве атрибута.

Теперь я хочу отфильтровать объекты, созданные пользователем user_id. Чтобы спящий режим работал с этим, я думаю, мне нужно, чтобы пользователь был определен внутри атрибута объектов created_by, поскольку спящий режим работает с сущностями.

e.g.:

public class MyObject implements Serializable {
    ...
    @Column(name = "created_by")
    org.springframework.security.core.userdetails.User created_by; 
    ... 
}

Но когда я теперь перечисляю все объекты MyObject, я получаю:

 org.hibernate.type.SerializationException: could not deserialize

Я пытался использовать @OneToMany для члена created_by, но потом получаю:

 MyObject.created_by references an unknown entity: org.springframework.security.core.userdetails.User

Поскольку он работает без записи пользователя, должны возникнуть проблемы с сериализацией объекта пользователя. Я восстановил серийные_идентификаторы других объектов, чтобы быть уверенным, но проблема не устранена. Есть ли что-то, что я пропустил, или это невозможно, и мне нужно реализовать пользовательского пользователя, чтобы делать то, что я хочу.


person Xtroce    schedule 29.01.2015    source источник


Ответы (1)


Spring Security не поставляется с какой-либо поддержкой JPA, поэтому вы должны создать свою собственную сущность пользователя, если хотите запросить свойства пользователя. Если вам нужно только запросить имя пользователя, вы можете сделать этот ярлык:

@Column
private String created_by; 
person holmis83    schedule 29.01.2015