Spring Security - Как получить аутентифицированный объект на небезопасных и защищенных страницах? - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть приложение Spring-boot / Thymeleaf с двумя конечными точками:

1: / int / : требуется sso / авторизация;2. / ext / : общедоступные страницы, доступ к которым может получить каждый;

Используя PreAuthenticationFilter, я смог защитить / int / * страницы.Когда пользователь пытается получить доступ к страницам / ext / *, я хотел бы иметь возможность узнать в контроллере, прошел ли пользователь ранее аутентификацию (путем доступа к защищенной странице).В настоящее время я сохраняю аутентифицированный объект Principal в сеансе HTTP в loadUserDetails UserDetailsService.Просто любопытно, если это правильный (или лучший) способ сделать это.

1 Ответ

0 голосов
/ 11 февраля 2019

Вы можете получить свой аутентифицированный объект с помощью аннотации @AuthenticationPrincipal вместо того, чтобы получать объект из httpsession и приводить его обратно к вашему объекту для каждого метода контроллера.

Позвольте мне привести пример, данная страница входа в систему являетсяоткрытая страница и объект пользователя, как показано ниже:

Класс пользователя:

public class User implement UserDetails {
    String contact;
    Integer age;
}

Контроллер:

@GetMapping(value = "/login")
ModelAndView login(@AuthenticationPrincipal User user) {
    if (user == null) {
        return new ModelAndView("/login");
    } else {
        return new ModelAndView(new RedirectView("/home"));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...