Rumah >Java >javaTutorial >Mengapa Keselamatan Spring Tidak Boleh Mengehadkan Akses Dengan Betul Berdasarkan Peranan Pengguna?

Mengapa Keselamatan Spring Tidak Boleh Mengehadkan Akses Dengan Betul Berdasarkan Peranan Pengguna?

Susan Sarandon
Susan Sarandonasal
2024-12-13 21:56:17873semak imbas

Why Can't Spring Security Properly Restrict Access Based on User Roles?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn