1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

JSF 2 , CDI 1.1 , SpringSecurity 4. Custom login form não redireciona para página correta.

Bom dia. Estou fazendo uma aplicação com JSF 2, SpringSecutiry 4 e CDI 1.1.

Fiz toda a implementação do SpringSecurity com jsf e aparemente tudo funcionou normalmente, porém ao fazer o form de login customizado, o mesmo redireciona para links de arquivos no Head do HTML. Se eu uso o form login do spring tudo funciona corretamente.

Seguem os códigos:

@EnableWebSecurity
@Configuration
@ComponentScan(
        basePackages = {
    "br.com.projectus.acompobra.negocio",
    "br.com.projectus.acompobra.dao"})
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Inject
    private UserDetailsService userDetailsService;

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.csrf().disable();
        http.authorizeRequests()
                .antMatchers("/resources/**").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login.jsf").defaultSuccessUrl("/obras.jsf")
                .permitAll()
                .and()
                .logout()
                .permitAll();
    }

Página HTML:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <h:outputStylesheet library="css" name="login.css"/>
        <title>Projectus - SGO</title>
        <link rel="shortcut icon" href="../resources/images/logo_prj.ico" type="image/x-icon" />
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </h:head>

    <h:body>

        <h:panelGroup rendered="#{param.erro != null}">  
            <p>Dados inválidos.</p>  </h:panelGroup> 
        <h:panelGroup rendered="#{param.logout != null}">  
            <p>Logout efetuado com sucesso.</p>  
        </h:panelGroup>


        <div id="header-wrapperLogin">
            <div id="headerLogin">
                <div id="logoLogin">

                    <h:form id="form" prependId="false">  
                        <h2>Seja bem vindo. Entre com os dados abaixo para realizar o login.</h2> 
                        <h:panelGrid columns="2">
                            <h:outputLabel for="username" value="Usuário" />  
                            <h:inputText id="username" />   
                            <h:outputLabel for="password" value="Senha" />  
                            <h:inputSecret id="password"  />  
                        </h:panelGrid>  
                        <p:commandButton value="Enviar" /> 
                    </h:form>

                </div>
            </div>
        </div>
    </h:body>

</html>
  • Tenta colocar o ajax="false" dentro do p:commandButton

    MiguelCP   23 de jul de 2015
  • Coloquei, o resultado foi o mesmo... O estranho é ele redirecionar para um arquivo css.

    http://localhost:8084/Sistema/faces/javax.faces.resource/primefaces.css?ln=primefaces&v=5.2

    well.nunes   23 de jul de 2015
  • Veja que ao realizar o login com sucesso o seu defaultSuccessUrl() está setado para "/faces/login.xhtml" está correto?

    MiguelCP   23 de jul de 2015
  • Eu já troquei o defaultSuccessUrl() para outra página e o resultado foi o mesmo. Inclusive também adicionei .antMatchers("/faces/resources/**").permitAll()

    well.nunes   23 de jul de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags jsf spring-security cdi login ou faça a sua própria pergunta.