Pagina personalizada spring secutiry

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