У меня странная проблема. База данных пуста. Нет пользователей. Конечно, я разрабатываю и думаю, что мой JWTToken хранится в localStorage
(я знаю, что это не очень хорошо и будет изменено).
httpOptions запроса ниже:
const httpOptions = {
headers: new HttpHeaders({ "Content-Type": "application/json" }),
};
Angular отправляет запрос Spring Boot с помощью этого метода:
login(credentials) {
console.log(httpOptions);
return this.http
.post<AuthenticationResponseData>(
SIGNIN_API,
{
username: credentials.username,
password: credentials.password,
},
httpOptions
)
.pipe(
tap((resData) => {
this.handleAuthentication(
resData.userId,
resData.username,
resData.email,
resData.accessToken
);
})
);
}
Здесь нет ничего особенного. Ошибка возникает в AuthTokenFilter в Spring Boot:
public class AuthTokenFilter extends OncePerRequestFilter {
private static final Logger logger = LoggerFactory.getLogger(AuthTokenFilter.class);
@Autowired
private JwtUtil jwtUtil;
@Autowired
private UserDetailsServiceImpl userDetailsService;
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
try {
String jwt = parseJwt(request);
if (jwt != null && jwtUtil.validateJwtToken(jwt)) {
String username = jwtUtil.getUserNameFromJwtToken(jwt);
UserDetails userDetails = userDetailsService.loadUserByUsername(username);
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
userDetails, null, userDetails.getAuthorities());
authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authentication);
}
} catch (Exception e) {
logger.error("Cannot set user authentication: {}", e);
}
filterChain.doFilter(request, response);
}
...
}
Каким-то образом Spring Boot получает JWTToken из HttpServletRequest
. Он всегда будет выдавать мне ошибку
org.springframework.security.core.userdetails.UsernameNotFoundException: User Not Found with username: DemoUser
Независимо от того, что я добавляю в маску входа. Эти учетные данные верны, но мне нужно предотвратить отправку JWTToken с помощью loginRequest. Откуда это?