@ktyz1992

Как проверить и сохранить данные о принципале (пользователе) в БД в момент аутентификации?

Здравствуйте! Я использую Spring Security для OAuth2 аутентификации на сайте. Аутентификация через Google и Github проходит нормально - защищённые страницы показываться, данные о принципале получается извлекать. Однако требуется хранение данных о зарегистрированных пользователях в локальной БД. Как перехватить момент аутентификации и в случае необнаружения такого пользователя:
1. перебросить на страничку сайта с внесением дополнительной информации о пользователе;
2. записать нового пользователя в БД.
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 1
upagge
@upagge
Веду блог blog.upagge.ru
Я использовал для этого

5tcpft-ss-tutxjp8emaoynfkda.png

Там есть метод

public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {


Через этот метод проходит аутентификация. Мы как бы создаем прокси для этого класса.

То есть первым в этом методе мы делаем

final OAuth2User oAuth2User = super.loadUser(userRequest);


Потом OAuth2User преобразовываем в нужную нам сушность и сохраняем ее в бд или обновляем. И делаем любые другие необходимые манипуляции.

Далее возвращаем

return new DefaultOAuth2User(appUserAllPermission, attributes, "id");


Единственное я не знаю, как перебросить на другую страничку в данном случае. Так же хочу отметить, что Oauth2 у нас тоже собственной реализации, но принцип вроде один и тот же.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы