Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Spring Security Retornando HTML e StatusCode 200

Fiz as configurações descritas na aula, adicionei a dependencia do Spring Security no pom.xml e criei a classe com as anotações e a herança descrita. Mas nas requisições a API em vez de 401 retorna 200 e como corpo retorna uma página de login HTML:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <title>Please sign in</title>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
    <link href="https://getbootstrap.com/docs/4.0/examples/signin/signin.css" rel="stylesheet" crossorigin="anonymous"/>
  </head>
  <body>
     <div class="container">
      <form class="form-signin" method="post" action="/login">
        <h2 class="form-signin-heading">Please sign in</h2>
        <p>
          <label for="username" class="sr-only">Username</label>
          <input type="text" id="username" name="username" class="form-control" placeholder="Username" required autofocus>
        </p>
        <p>
          <label for="password" class="sr-only">Password</label>
          <input type="password" id="password" name="password" class="form-control" placeholder="Password" required>
        </p>
<input name="_csrf" type="hidden" value="d5ec981c-0744-49c9-8d6e-eadae6a590c1" />
        <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
      </form>
</div>
</body></html>
3 respostas

Oi Vitor,

Posta aqui o código completo da sua classe SecurityConfigurations.

Olá, Rodrigo Avancei um pouco mais no curso mas continuo recebendo o corpo da página de login para requisições para url's não "públicas". Segue minha classe:

@Configuration
@EnableWebSecurity
public class SecurtityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private AuthenticationService securityService;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(securityService).passwordEncoder(new BCryptPasswordEncoder());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers(HttpMethod.GET, "/topicos").permitAll()
            .antMatchers(HttpMethod.GET, "/topicos/*").permitAll()
            .anyRequest().authenticated()
            .and().formLogin();
    }

}

Antes de sobrescrever os métodos da superclasse qualquer requisição trazia a página também.

solução!

Oi Vitor,

A página de login é devolvida por causa desse trecho no método configure:

.and().formLogin();

Conforme foi mostrado nessa aula: https://cursos.alura.com.br/course/spring-boot-seguranca-cache-monitoramento/task/55842

Posteriormente será ensinado como fazer a autenticação via token, sem utilizar essa página de login.

Bons estudos!