Ошибка без AuthenticationManager в Spring SecurityJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Ошибка без AuthenticationManager в Spring Security

Сообщение Anonymous »

У меня есть Java-приложение с Spring-Boot. Мой код начал выдавать ошибку StackOverFlow в части аутентификации, поэтому я поискал в журналах проблему и понял, что она находится в следующей строке:
var аутентификация = Manager.authenticate(authenticationToken);
Я приведу свой код того, что я пытался сделать, чтобы эта часть аутентификации работала
@Configuration
@EnableWebSecurity
public class SecurityConfiguration {

@Autowired
private SecurityFilter securityFilter;

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http
.csrf(csrf -> csrf.disable())
.sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.authorizeHttpRequests(req -> {
req.requestMatchers("/authentication").permitAll();
req.anyRequest().authenticated();
})
.addFilterBefore(securityFilter, UsernamePasswordAuthenticationFilter.class)
.build();
}

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

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

@Component
public class SecurityFilter extends OncePerRequestFilter {

@Autowired
private TokenService tokenService;

@Autowired
private UserRepository repository;

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
var tokenJWT = recuperarToken(request);
if (tokenJWT != null) {
var subject = tokenService.getSubject(tokenJWT);
var usuario = repository.findByEmail(subject);
var authentication = new UsernamePasswordAuthenticationToken(usuario, null, usuario.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
}
filterChain.doFilter(request, response);
}

private String recuperarToken(HttpServletRequest request) {
var authorizationHeader = request.getHeader("Authorization");
if (authorizationHeader != null) {
return authorizationHeader.replace("Bearer ", "").trim();
}

return null;
}

}

@RestController
@RequestMapping("/authentication")
public class AuthenticationController {
@Autowired
private AuthenticationManager manager;

@Autowired
private TokenService tokenService;

@PostMapping
public ResponseEntity efetuarLogin(@RequestBody @Valid UserDTO dados) {
try {
var authenticationToken = new UsernamePasswordAuthenticationToken(dados.email(), dados.password());
var authentication = manager.authenticate(authenticationToken);
System.out.println(authentication);
var tokenJWT = tokenService.gerarToken((User) authentication.getPrincipal());
return ResponseEntity.ok(new TokenJWT(tokenJWT));
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.badRequest().body(e.getMessage());
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... g-security
Ответить

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

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

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

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

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