Rumah >Java >javaTutorial >Mengapa Keselamatan Spring Tidak Boleh Mengehadkan Akses Dengan Betul Berdasarkan Peranan Pengguna?
Menyelesaikan Isu Peranan dalam Keselamatan Musim Bunga
Isu:
Semasa melaksanakan Keselamatan Musim Bunga ke dalam projek, diperhatikan bahawa pengguna dengan peranan "pengguna" sahaja boleh mengakses sumber khusus pentadbir. Isu yang disyaki terletak dalam pertanyaan pengesahan pengguna.
Analisis:
Percubaan konfigurasi untuk mengesahkan kedua-duanya berdasarkan dalam memori dan JDBC. Pertanyaan untuk mendapatkan semula pihak berkuasa dikonfigurasikan dengan "pilih users_username, roles_id from roles_users where users_username=?" dan awalan peranan dengan "ROLE_".
Punca:
Walau bagaimanapun, masalah ini berpunca daripada ralat logik dalam susunan pemadanan kebenaran. Padanan "anyRequest().authenticated()" diletakkan secara salah sebelum "antMatchers("/users/all").hasRole("admin")", membenarkan semua pengguna yang disahkan mengakses, tanpa mengira peranan mereka.
Penyelesaian:
Untuk menangani isu ini, peraturan kebenaran harus disusun semula untuk mematuhi pesanan yang dinyatakan dalam dokumentasi Spring Security. Konfigurasi yang diubah suai di bawah membetulkan ralat:
@Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() .httpBasic() .and() .authorizeRequests() .antMatchers("/users/all").hasRole("admin") .anyRequest().authenticated() .and() .formLogin() .and() .exceptionHandling().accessDeniedPage("/403"); }
Dengan pengubahsuaian ini, hanya pengguna yang mempunyai peranan "admin" akan diberikan akses kepada "/users/all", dan pengguna bukan pentadbir akan dihadkan daripada mengakses sumber yang dilindungi.
Atas ialah kandungan terperinci Mengapa Keselamatan Spring Tidak Boleh Mengehadkan Akses Dengan Betul Berdasarkan Peranan Pengguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!