1
resposta

Como passar um parametro para o controller login e pegar o parametro no login.html

Tenho uma regra no meu sistema que precisa enviar um "id" como parametro para a controller (/login) e da controller para o form. http://localhost:8080/login?id=112021

Alem do username e password, o login.html tem um parametro do tipo hidden chamado id:

<form th:action="@{/login}" method="post" class="card-body">
<input type="hidden" name="id" value="${id}">

Minha controller:

@Controller
@RequestMapping(value="/login")
public class LoginController {
    @GetMapping
    public String login(@RequestParam(defaultValue = "12021") String id) {
        System.out.println("ID == " + id);
         return "login"; 
    }      
}

quando digito o parametro: http://localhost:8080/login?id=112021 não consigo pegar o 112021 apenas o default 12021 definido no @RequestParam(defaultValue

minha classe **WebSecurityConfig** extends WebSecurityConfigurerAdapter
  @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        .authorizeRequests()
            .antMatchers("/produtos/listar").permitAll()
            .anyRequest().authenticated()
        .and()
            .formLogin(form -> form
                    .loginPage("/login")
                    .defaultSuccessUrl("/cliente/index", true)
                    .permitAll()
            )
            .logout(logout -> {
                     logout.logoutUrl("/logout")
                    .logoutSuccessUrl("/home");
            })
        .csrf().disable()
        .exceptionHandling().accessDeniedPage("/403")
        .and()
        .sessionManagement()
           .sessionFixation().migrateSession()
        .and()
        .addFilterBefore(authenticationFilter(), UsernamePasswordAuthenticationFilter.class) ;
}

Como proceder?

1 resposta

Ola Moacir

Olhando o codigo enviado, ao meu ver, deveria funcionar. O que pode estar acontecendo é o spring security estar interceptando e criando um redirect para seu login, e dessa forma, perdendo o seu request param.

Note se acontece o seguinte: ao acessar no navegador http://localhost:8080/login?id=112021, veja se após aparecer a tela de login é trocado a URL para somente http://localhost:8080/login, ou se mantem o seu ID na URL do navegador.