Fiz os passos descritos na aula mas não consigo efetuar login de forma alguma. Sou direcionado a mesma página de login mas com um "?error". Não aparece nada no console, tanto do Eclipse quanto se eu usar o comando inspecionar do Chrome.
WebSecurityConfig
package br.com.alura.mvc.mudi.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/css/**", "/js/**")
.permitAll()
.and()
.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin(
form -> form
.loginPage("/login")
.permitAll()
);
}
@Bean
@Override
protected UserDetailsService userDetailsService() {
UserDetails user =
User.withDefaultPasswordEncoder()
.username("root")
.password("root")
.roles("ADM")
.build();
return new InMemoryUserDetailsManager(user);
}
}
LoginController:
package br.com.alura.mvc.mudi.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class LoginController {
@GetMapping
@RequestMapping("/login")
public String login() {
return "login";
}
}
login.html:
<!DOCTYPE html>
<html>
<head th:replace="~{base :: head}"></head>
<body>
<div th:replace="~{base :: logo}"></div>
<div class="container">
<div th:replace="~{base :: titulo('Login')}"></div>
<div class="card mb-3">
<form th:action="@{/login}" method="POST" class="card-body">
<div class="form-group mb-3">
<div class="mb-2">
<label for="username">Usuário</label>
<input name="username" class="form-control" placeholder="usuário"/>
</div>
<div class="mb-2">
<label for="password">Senha</label>
<input type="password" name="username" class="form-control" placeholder="senha"/>
</div>
<button class="btn btn-primary" type="submit">Login</button>
</div>
</form>
</div>
</div>
</body>
</html>