Saya memiliki masalah dengan Otorisasi di Keamanan Musim Semi. saya sedang menulis aplikasi penyelenggara sederhana dan ada 14 peran, tetapi saya membuat seluruh pengujian di ROLE_ADMIN, dan tidak berhasil. mengetik /admin membawa saya ke / halaman yang ditolak :( Bisakah Anda menemukan masalah di sini?

    protected void configure(HttpSecurity httpSec) throws Exception {
        httpSec.authorizeRequests().antMatchers("/").permitAll().antMatchers("/login").permitAll().antMatchers("/admin/**")
                .hasAnyRole("ROLE_ADMIN", "ROLE_PRODUCTION_MANAGER", "ROLE_FOREMAN").antMatchers("/workingpanel")
                // Another .antMatchers //
                .authenticated().and().csrf().disable().formLogin().loginPage("/login").failureUrl("/login?error=true")
                .defaultSuccessUrl("/").usernameParameter("email").passwordParameter("password").and().logout()
                .logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/").and()
                .exceptionHandling().accessDeniedPage("/denied");
    }
0
TomaszC283 29 Maret 2020, 19:20

1 menjawab

Jawaban Terbaik

Coba ubah .antMatchers("/admin/").hasAnyRole("ROLE_ADMIN", ...) menjadi .antMatchers("/admin/").hasAnyRole("ADMIN",... .) karena Spring Security menambahkan awalan ROLE ke setiap peran secara otomatis. Sebagai contoh

protected void configure(final HttpSecurity http) throws Exception {
...
.antMatchers("/admin/** ").hasAnyRole("ADMIN","USER",...)
...

}

1
Aram Yeghiazaryan 29 Maret 2020, 17:41