Моя проблема связана с аутентификацией на основе токенов jwt с пружинной загрузкой в бэкэнде и угловым во внешнем интерфейсе, поэтому для этого я разработал два фильтра в своей конфигурации безопасности Spring: один для выдачи токенов, а другой для их проверки внутри фильтра.который выдает токены: запрос к конечной точке "/ login" будет содержать такие данные пользователя, как пароль и имя пользователя, поэтому фильтр может аутентифицировать пользователя и выдавать токен взамен, и это моя проблема, я не вижу другого способа разрешить аутентификациюдо тех пор, пока мы не доберемся до контроллера, где я должен сделать эту конкретную конечную точку.
@Override
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response)
throws AuthenticationException {
try {
~~// 1. Get credentials from request
~~UserCredentials creds = new ~~ObjectMapper().readValue(request.getInputStream(), ~~UserCredentials.class);
// 2. Create auth object (contains credentials) which will be used by auth manager
~~UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(creds.getUsername(),creds.getPassword(), Collections.emptyList());
// 3. Authentication manager authenticate the user, and use ~~UserDetialsServiceImpl::loadUserByUsername() method to load the user.
return authManager.authenticate(authToken);
~~} catch (IOException e) {
~~~~~~throw new RuntimeException(e);
}
}
Мои друзья, я хочу, чтобы вы посоветовали мне, хорошо ли то, что я уже делаю, и как лучше всего выполнитьчто внутри контроллера или непосредственно внутри фильтра?Спасибо (пожалуйста, прости мой английский)
ожидаемый результат:
@PostMapping("/login")
public void method(@RequestBody MyUser myUser){
// perform authentication and issue token for my front app
}