Spring Security a submit formularza

Odpowiedz Nowy wątek
Studiuje
2016-05-14 22:43
Studiuje
0

Witajcie
Mam problem. Tworzę sobie aplikację, w której mam formularz dodający dane do bazy wraz z plikami, pliki zapisywane na serwerze. Wszystko działa sprawnie, submit formularza bez zarzutu, do momentu kiedy próbuję zabezpieczyć aplikację korzystając ze Spring Security. Po dodaniu jakiejś tam podstawowej konfiguracji, zmianie sposobu logowania, strony logowania i ustawień dostępności okazuje się że submit przestał działać. To co ukazuje się moim oczom po naciśnięciu przycisku pokazuję w załączniku. Czy ktoś może potrafi mi pomóc?

A konsola co ci wyświetla? - Heheczek 2016-05-14 22:48

Pozostało 580 znaków

Miły Adolf
2016-05-14 23:07
Miły Adolf
0

Czy ktoś może potrafi mi pomóc?

Chyba nie sądzisz, że po tych informacjach, ktoś będzie Ci w stanie pomóc. Wyrzuca Ci jakieś błędy w konsoli ? Jak skonfigurowałeś nadpisane metody configure()

Pozostało 580 znaków

Studiuje
2016-05-14 23:19
Studiuje
0

Wiem że to szczątkowe informacje, przepraszam, pisane na szybko. W konsoli nie pojawia się kompletnie nic. Żadnych błędów przy uruchamianiu i przy późniejszej pracy. Nic. A metody configure to:

        @Override
    protected void configure(HttpSecurity http) throws Exception
    {
        http.authorizeRequests().antMatchers("/admin/**").hasAuthority("ROLE_ADMIN")
                                .antMatchers(HttpMethod.POST, "/admin/addContest").authenticated()
                                .anyRequest().permitAll()
                                .and().formLogin().loginPage("/login")
                                .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                                      .logoutSuccessUrl("/index").invalidateHttpSession(true);
    }

        @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception
    {
        auth.jdbcAuthentication().dataSource(dataSource).passwordEncoder(passwordEncoder())
                .usersByUsernameQuery("select login, password, enabled " + "from SA WHERE login=? ")
                .authoritiesByUsernameQuery("select login, authority from authorities where login=?")
                .authoritiesByUsernameQuery("select login, role from SA where login=?");

    }

Pozostało 580 znaków

Miły Adolf
2016-05-14 23:24
Miły Adolf
0
authoritiesByUsernameQuery("select login, authority from authorities where login=?")
                .authoritiesByUsernameQuery("select login, role from SA where login=?");

Czemu dwa razy konfigurujesz to samo chyba chodzilo groupAuthorities....
Pierwszy config wygląda na dobry

Pozostało 580 znaków

Studiuje
2016-05-14 23:32
Studiuje
0

Hmm... Nie wiem. Wydaje mi się ze chodziło mi o to że z dwóch miejsc można dostać autoryzację, w sensie uprawnienia miałem w dwóch tabelach początkowo, gdyż uczyłem się różnych podejść. Ma to wpływ na mój problem?

Pozostało 580 znaków

Miły Adolf
2016-05-14 23:32
Miły Adolf
0

Powiedz jeszcze co robi twój submit

Pozostało 580 znaków

Studiuje
2016-05-14 23:38
Studiuje
0

<input type="submit" value="Dodaj" name="Submit" class="btn btn-primary" />

Wygląda tak, ma być obsłużony przez kontroler

@RequestMapping(value = "admin/addContest", method = RequestMethod.POST)
    public String addContestPOST(Model model, @ModelAttribute("cd") CD cD) throws IOException
    {
        //rzeczy

        return "redirect:../index";
    }   

Pozostało 580 znaków

Miły Adolf
2016-05-14 23:54
Miły Adolf
0

No dobra z tego co zrozumiałem bo nie podałeś formularza pełnego ale pewnie przed submitem jest coś o wysłaniu post na admin/addContest.

Próbujesz wysłać tam POST strona przenosi cię na /login, nie masz włączonego httpBasić także nie obsługujesz wysyłania tokenu csrf między stronami, więc wywala ci błąd. Spróbuje zaraz poprawić

Pozostało 580 znaków

Studiuje
2016-05-15 00:00
Studiuje
0
@Override
    protected void configure(HttpSecurity http) throws Exception
    {
        http.authorizeRequests().antMatchers("/admin/**").hasAuthority("ROLE_ADMIN")
                                .antMatchers(HttpMethod.POST, "/admin/addContest").authenticated()
                                .anyRequest().permitAll()
                                .and().formLogin().loginPage("/login")
                                .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                                      .logoutSuccessUrl("/index").invalidateHttpSession(true)
                                      .and().httpBasic();
    }

po zrobieniu takiego czegoś nadal problem

Pozostało 580 znaków

Miły Adolf
2016-05-15 00:00
Miły Adolf
0

Spróbuj to:


        http
                .authorizeRequests().antMatchers("/admin/**").hasAuthority("ROLE_ADMIN")
                .antMatchers(HttpMethod.POST, "/admin/addContest").authenticated()
                .anyRequest().permitAll()
                .and()
                .formLogin()
                .and()
                .csrf().disable()
                .httpBasic();

Pozostało 580 znaków

Miły Adolf
2016-05-15 00:02
Miły Adolf
0

A zapomniałem o możliwości logout


      http
                .authorizeRequests().antMatchers("/admin/**").hasAuthority("ROLE_ADMIN")
                .antMatchers(HttpMethod.POST, "/admin/addContest").authenticated()
                .anyRequest().permitAll()
                .and()
                .formLogin()
                .and()
                .logout()
                .and()
                .csrf().disable()
                .httpBasic();

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0