Configurar Spring security

13 respostas
programaçãospring
R

Bom dia.

Estou tentando configurar minha aplicação para utilizar o spring security.

Ja adicionei a dependência do spring-security no pom
Minha controller está fazendo a requisição para a pagina de login que criei.

@RequestMapping(method = RequestMethod.GET, path = "/entrar")
    public String entrar() {
        return "entrar";
    }

A pagina de configuração do spring tbm já está pré configurada

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{

	@Override
	protected void configure(HttpSecurity http) throws Exception {
		
		http.
		authorizeRequests()
			.anyRequest()
			.authenticated()
		.and()
		.formLogin()
			.loginPage("/entrar")
			.permitAll();
	
	}
}

Porem por algum motivo quando inicio a requisicao no navegador para localhost:8080 ele abre essa tela sem o css que configurei.

image

Quando coloco o usuario e a senha e tento entrar, ele me da esse erro abaixo:

No entanto se eu clico em VOLTAR no próprio navegador ele carrega novamente a tela de login, porem dessa vez com o css, e quando informada as credenciais ele loga no sistema normalmente.

image

13 Respostas

J

Como está fazendo o post no navegador? Cola aqui o código desse formulário pra ter mais chances de alguem ajudar.

R

estou fazendo assim:

<div class="panel-body">
<form action="/entrar" method="post">
<div class="form-group">

Mais ja tentei direcionar para

<form action="/home" method="post">

@RequestMapping(method = RequestMethod.GET, path = "/")
public String home() {
    return "home";
}

Que é a pagina inicial do projeto e tbm nao deu certo ainda.

J

Nao sei se é só isso, mas no back-end você colocou como GET e seu client está como POST. Muda pra POST no back-end.

R

Valeu a tentativa man, mais nao deu certo. :cry:

J

Posta o código completo, nao vi o submit ali.

R
Spring Security
<body style="background-color: #f9f9f9">
	<div class="row">
		<div class="col-sm-4 col-sm-offset-4">
			<div th:if="${param.error}">
				<div class="alert alert-danger">Usuário e/ou inválidos!</div>
			</div>

			<div th:if="${param.logout}">
				<div class="alert alert-info">Até logo!</div>
			</div>

			<div class="panel panel-info">
				<div class="panel-heading">
			    	<h3 class="panel-title">Entrar</h3>
			  	</div>
				<div class="panel-body">
					<form action="/entrar">
						<div class="form-group">
							<input name="username" class="form-control" placeholder="Usuário"/>
						</div>

						<div class="form-group">
							<input type="password" name="password" class="form-control" placeholder="Senha"/>
						</div>

						<div class="form-group">
							<button class="btn btn-primary btn-block">Entrar</button>
						</div>

						<div class="form-group">
							<input type="checkbox" id="remember-me" name="remember-me" />
							<label for="remember-me">Lembrar?</label>
						</div>

						<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}" />
					</form>
				</div>
			</div>
		</div>
	</div>

	<script th:src="@{/webjars/jquery/jquery.min.js}"></script>
	<script th:src="@{/webjars/bootstrap/js/bootstrap.min.js}"></script>
</body>
J

Teu botao não está com o tipo submit.

Exemplo:

<button type="submit">Entrar</button>

A

Uma coisa que suspeito estar acontecendo aqui é que você colocou todos seus recursos (imagens, css, javascript) atrás do spring security, ou seja, você precisa estar logado pra receber seu css (por isso você só vê o css na página após logar a primeira vez).

O que você geralmente faz é colocar páginas protegidas sob um “prefixo” diferente na url, assim o spring nao vai pedir autenticaçao pra esses recursos.

Algo como: “/webjars/protected”

R

Abel, muito obrigado por sua dica, consegui compreender sua explicacão e faz muito sentido!.

Porem comecei a mexer com spring security e bootstrap agora, poderia ser um pouco mais claro pra que eu possa tentar corrir isso?

att;

R

Tentei fazer dessa forma tbm manim, na verdade tentei implementar até mesmo outro formulário, porem a falha da segunda imagem ainda persiste, acredito que o que o abel informou esteja certo, so preciso intender como fazer para meus recursos iniciarem juntamente com a pagina de login.

D

olha este exemplo:

A

Infelizmente, tem tempo que trabalhei com spring e nao lembro como configurar isso. Espero que o exemplo que o @dlemos postou tenha isso.

R

Vou tentar refazer o processo, rever minhas classes e as configuracoes.
Agradeço voces pelo apoio, me serviu para abrir os olhos com relação a alguns pontos que eu nao tinha percebido.

Criado 5 de dezembro de 2018
Ultima resposta 5 de dez. de 2018
Respostas 13
Participantes 4