Adicionei no meu pom a dependência do spring security
, criei uma nova pagina personalizada para autenticação de usuário, configurei o webSecurityConfig
para procurar a minha pagina personalizada porem ao executar o programa ele me abre a pagina padrão criada pelo próprio SC.
Minha pagina html de login chama-se entrar.html, então no meu getMapping coloquei assim:
@GetMapping("/")
public String entrar() {
return "entrar";
}
E a classe de configuracao fiz dessa forma, informando que quero que abra minha pagina.
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.
authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginPage("/entrar")
.permitAll();
}
}
Porem ao executar ele continua abrindo a pagina padrão do spring
Como resolver isso?
1 curtida
Quando um usuário tentar acessar uma URI sem estar logado, ele vai ser redirecionado para a URI que você informou no método loginPage.
Sendo assim você precisa mapear esta URI e nela retornar seu html.
@GetMapping("/entrar")
public String entrar() {
return "entrar";
}
1 curtida
bom dia Felix primeiramente lhe agradeço pela resposta, entretanto mesmo seguindo sua orientação não funcionou. O Spring Insiste em abrir a pagina /login padrão dele próprio ao invés de /entrar. Mesmo mapeando ela dessa forma que me falou.
@GetMapping("/entrar")
public String entrar() {
return "entrar";
}
Tem alguma outra ideia?
1 curtida
Faz assim:
.formLogin()
.loginPage("/entrar.jsp")
.loginProcessingUrl("/login")
.permitAll()
1 curtida
Uso o spring security 5.1.1 é funciona
<!-- Spring security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${spring-security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring-security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring-security.version}</version>
</dependency>
<!--Fim spring security -->
1 curtida
Atualizei as dependências, fiz conforme o comentário anterior e nada.
Andei dando uma pesquisada, inclusive criei um novo projeto, clonei um projeto feito por outro usuario no qual tenho certeza que funciona e mesmo assim, na minha maquina ao iniciar a aplicação o spring abre antes de mais nada a pagina /login gerada pelo próprio framwork.
Verificar se não há alguma coisa diferente do exemplo que esta na documentação do Spring Security.
https://docs.spring.io/spring-security/site/docs/current/guides/html5/form-javaconfig.html
Você conseguiu resolver essa questão, além do que eu te passei você tem que der uma página mapeado para /login, caso contrário o spring
não retornará a tua página personalizada. Cria sua página de login(html, xhtml, jsp)
e depois crie um controller
e realize o mapeamento get
retornando a tua página de login no método.
@getMapping
public String exemplo(){
return "login";
}
1 curtida