«Для доступа к этому ресурсу требуется полная аутентификация» даже при передаче действующего токена JWT.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 «Для доступа к этому ресурсу требуется полная аутентификация» даже при передаче действующего токена JWT.

Сообщение Anonymous »

До сих пор я в основном работал с C# и ASP.NET, но теперь мне нужно написать веб-API на Java Spring. Я совершенно новичок в этой среде и не могу справиться с аутентификацией токена JWT, для меня это выглядит как черная магия. Если я открываю конечную точку для анонимного пользователя, они работают нормально, но когда я пытаюсь потребовать аутентификацию, я всегда получаю код состояния 401 Unauthorized, даже если я передаю действительный токен JWT в своем запросе. Это мой класс конфигурации безопасности:
@Configuration
@EnableWebSecurity
public class SecurityConfig {

private final JwtAuthEntryPoint authEntryPoint;
private final UserDetailsServiceImpl userDetailsService;

@Autowired
public SecurityConfig(JwtAuthEntryPoint authEntryPoint, UserDetailsServiceImpl userDetailsService) {
this.authEntryPoint = authEntryPoint;
this.userDetailsService = userDetailsService;
}

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf(AbstractHttpConfigurer::disable)
.exceptionHandling(e -> {
e.authenticationEntryPoint(authEntryPoint);
})
.authorizeHttpRequests(r -> {

r.requestMatchers(HttpMethod.POST, "/api/authentication/respondents").authenticated();
})
.httpBasic(Customizer.withDefaults());
http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
return http.build();
}

@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration)
throws Exception {
return authenticationConfiguration.getAuthenticationManager();
}

@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}

@Bean
public Filter jwtAuthenticationFilter() {
return new JwtAuthenticationFilter();
}
}

Мой поставщик токенов
@Component
public class TokenProvider {

private final SecuritySettings securitySettings;

@Autowired
public TokenProvider(SecuritySettings securitySettings) {
this.securitySettings = securitySettings;
}

public String generateToken(Authentication authentication){
String username = authentication.getName();
Date curretDate = new Date();
int expiration = securitySettings.getExpiration();
Date expireDate = new Date(curretDate.getTime() + expiration);

String token = Jwts.builder()
.setSubject(username)
.setIssuedAt(curretDate)
.setExpiration(expireDate)
.signWith(SignatureAlgorithm.HS512, securitySettings.getKey())
.compact();

return token;
}

public String getUsernameFromJwt(String token){
Claims claims = Jwts.parser()
.setSigningKey(securitySettings.getKey())
.parseClaimsJws(token)
.getBody();

return claims.getSubject();
}

public boolean validateToken(String token){
try{
Jwts.parser()
.setSigningKey(securitySettings.getKey())
.parseClaimsJws(token);
return true;
} catch (Exception e){
throw new AuthenticationCredentialsNotFoundException("Jwt was expired or incorrect");
}
}
}

Фильтр аутентификации:
public class JwtAuthenticationFilter extends OncePerRequestFilter {

@Autowired
private TokenProvider tokenProvider;
@Autowired
private UserDetailsServiceImpl userDetailsService;

@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain)
throws ServletException, IOException {
String token = getJWTFromRequest(request);
if (StringUtils.hasText(token) && tokenProvider.validateToken(token)){
String username = tokenProvider.getUsernameFromJwt(token);

UserDetails user = userDetailsService.loadUserByUsername(username);
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(user,
user.getAuthorities());
authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authenticationToken);
}
filterChain.doFilter(request, response);
}

private String getJWTFromRequest(HttpServletRequest request) {
String bearerToken = request.getHeader("Authorization");
if (StringUtils.hasText(bearerToken) && bearerToken.startsWith("Bearer ")){
return bearerToken.substring(7, bearerToken.length());
}

return null;
}
}

реализация службы сведений о пользователях:
@Service
public class UserDetailsServiceImpl implements UserDetailsService {

private IdentityUserRepository identityUserRepository;

@Autowired
public UserDetailsServiceImpl(IdentityUserRepository identityUserRepository) {
this.identityUserRepository = identityUserRepository;
}

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
IdentityUser databaseUser = identityUserRepository
.findByUsername(username)
.orElseThrow(() -> new UsernameNotFoundException("Username not found"));
return new User(databaseUser.getUsername(), databaseUser.getPasswordHash(), mapRolesToAuthorities(databaseUser));
}

private List mapRolesToAuthorities(IdentityUser user){
List authorities = new ArrayList();
authorities.add(new SimpleGrantedAuthority("ROLE_" + user.getRole()));
return authorities;
}

}

Я потратил около 15 часов, пытаясь найти некоторую информацию и решить эту проблему, но ничего не помогло. Единственное, что я обнаружил, это то, что я всегда добираюсь до этой точки входа:
@Component
public class JwtAuthEntryPoint implements AuthenticationEntryPoint {
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException.getMessage());
}
}

И я думаю, отсюда возвращается 401. В сообщении об исключении говорится: «Для доступа к этому ресурсу требуется полная аутентификация»... Я был бы очень благодарен, если бы кто-нибудь мне помог. Возможно, я также упомяну, что моя цель — ограничить конечную точку пользователями с правами администратора с помощью hasRole("ADMIN") (это также оставляет меня с 401). И чтобы внести ясность: токен носителя JWT, переданный в заголовке аутентификации, действителен.
Журналы (может быть полезны):
[2024-07-05 21:46:18.240] [ERROR] [http-nio-auto-1-exec-1] c.s.api.handlers.GlobalExceptionHandler - Full authentication is required to access this resource org.springframework.security.authentication.InsufficientAuthenticationException: F u l l a u t h e n t i c a t i o n i s r e q u i r e d t o a c c e s s t h i s r e s o u r c e < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . a c c e s s . E x c e p t i o n T r a n s l a t i o n F i l t e r . h a n d l e A c c e s s D e n i e d E x c e p t i o n ( E x c e p t i o n T r a n s l a t i o n F i l t e r . j a v a : 1 9 9 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . a c c e s s . E x c e p t i o n T r a n s l a t i o n F i l t e r . h a n d l e S p r i n g S e c u r i t y E x c e p t i o n ( E x c e p t i o n T r a n s l a t i o n F i l t e r . j a v a : 1 7 8 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . a c c e s s . E x c e p t i o n T r a n s l a t i o n F i l t e r . d o F i l t e r ( E x c e p t i o n T r a n s l a t i o n F i l t e r . j a v a : 1 4 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . a c c e s s . E x c e p t i o n T r a n s l a t i o n F i l t e r . d o F i l t e r ( E x c e p t i o n T r a n s l a t i o n F i l t e r . j a v a : 1 2 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . w r a p F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 4 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 2 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 1 3 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . a u t h e n t i c a t i o n . A n o n y m o u s A u t h e n t i c a t i o n F i l t e r . d o F i l t e r ( A n o n y m o u s A u t h e n t i c a t i o n F i l t e r . j a v a : 1 0 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . w r a p F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 4 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 2 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 1 3 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . s e r v l e t a p i . S e c u r i t y C o n t e x t H o l d e r A w a r e R e q u e s t F i l t e r . d o F i l t e r ( S e c u r i t y C o n t e x t H o l d e r A w a r e R e q u e s t F i l t e r . j a v a : 1 7 9 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . w r a p F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 4 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 2 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 1 3 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . s a v e d r e q u e s t . R e q u e s t C a c h e A w a r e F i l t e r . d o F i l t e r ( R e q u e s t C a c h e A w a r e F i l t e r . j a v a : 6 3 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . w r a p F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 4 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 2 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 1 3 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . O n c e P e r R e q u e s t F i l t e r . d o F i l t e r ( O n c e P e r R e q u e s t F i l t e r . j a v a : 1 0 1 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . w r a p F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 4 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 2 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 1 3 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . O n c e P e r R e q u e s t F i l t e r . d o F i l t e r ( O n c e P e r R e q u e s t F i l t e r . j a v a : 1 0 1 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . w r a p F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 4 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 2 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 1 3 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . a u t h e n t i c a t i o n . l o g o u t . L o g o u t F i l t e r . d o F i l t e r ( L o g o u t F i l t e r . j a v a : 1 0 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . a u t h e n t i c a t i o n . l o g o u t . L o g o u t F i l t e r . d o F i l t e r ( L o g o u t F i l t e r . j a v a : 9 3 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . w r a p F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 4 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 2 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 1 3 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . O n c e P e r R e q u e s t F i l t e r . d o F i l t e r ( O n c e P e r R e q u e s t F i l t e r . j a v a : 1 0 1 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . w r a p F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 4 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 2 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 1 3 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . O n c e P e r R e q u e s t F i l t e r . d o F i l t e r ( O n c e P e r R e q u e s t F i l t e r . j a v a : 1 0 1 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . w r a p F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 4 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 2 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 1 3 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . c o n t e x t . S e c u r i t y C o n t e x t H o l d e r F i l t e r . d o F i l t e r ( S e c u r i t y C o n t e x t H o l d e r F i l t e r . j a v a : 8 2 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . c o n t e x t . S e c u r i t y C o n t e x t H o l d e r F i l t e r . d o F i l t e r ( S e c u r i t y C o n t e x t H o l d e r F i l t e r . j a v a : 6 9 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . w r a p F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 4 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 2 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ V i r t u a l F i l t e r C h a i n . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 1 3 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . O n c e P e r R e q u e s t F i l t e r . d o F i l t e r ( O n c e P e r R e q u e s t F i l t e r . j a v a : 1 0 1 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . w r a p F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 2 4 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . s e c u r i t y . w e b . O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r $ O b s e r v a t i o n F i l t e r . d o F i l t e r ( O b s e r v a t i o n F i l t e r C h a i n D e c o r a t o r . j a v a : 227)
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$0(ObservationFilterChainDecorator.java:323)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:224)
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:352)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:268)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:642)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:410)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:340)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:277)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:362)
at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:222)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:842)


Подробнее здесь: https://stackoverflow.com/questions/787 ... ssed-a-val
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»