У меня есть сущность, которая имеет атрибут MyUser author;
. Я также использую этот класс в процессе пользовательской авторизации для создания экземпляра MyUserPrincipal
. (Я черпал вдохновение из сообщения Callicoder в блоге и хранилище .)
Фрагмент части процедуры ведения журнала:
public class CustomOAuth2UserService extends DefaultOAuth2UserService {
@Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
// He I use myUserRepository, to load MyUser instance and than return MyUserPrincipal which implements OAuth2User, UserDetails...
}
}
Теперь у меня есть хранилище для сущности книги, например. Книга может выглядеть так:
@Entity
@Getters // project lombook magic here
@Setters
public class Book {
private MyUser author;
private String title;
}
Я могу создать новый ресурс, используя запрос POST к http://localhost/api/books с такими данными:
{
"author":"api/authors/42",
"title":"stackoverflow forever"
}
Мой вопрос : можно ли легко (без специального контроллера) использовать «authentication.principal.userId» из SecurityContext
для заполнения автором вновь созданного ресурса / записи? Я бы хотел запретить пользователю моего API вообще отправлять поле автора.