Spring Security menyediakan mekanisme pengesahan dan kebenaran, termasuk: Pengesahan: Semak kesahihan bukti kelayakan pengguna menggunakan penyedia pengesahan, seperti menggunakan nama pengguna dan kata laluan atau pengesahan LDAP. Keizinan: Gunakan pengurus keputusan akses untuk membandingkan kebenaran pengguna dan URL yang diminta untuk menentukan sama ada untuk memberikan akses berdasarkan keputusan akses, seperti AffirmativeBased (mana-mana peranan yang sepadan membenarkan akses) atau ConsensusBased (semua peranan yang sepadan membenarkan akses). Kes praktikal: RBAC (kawalan akses berasaskan peranan): Gunakan UserDetailsService untuk menentukan peranan, gunakan RoleHierarchyVoter untuk mewujudkan hierarki peranan dan gunakan AffirmativeBased untuk mengakses pengurus keputusan untuk mendapatkan kebenaran. Proses pengesahan dan kebenaran untuk Spring Security pengesahan)
UserDetailsService (sahkan pengguna menggunakan logik tersuai )
LDAPAuthenticationProvider (sahkan melalui LDAP)Pelanggan menghantar permintaan pengesahan ke pelayan pengesahan, yang mengandungi nama pengguna dan kata laluan.
Pelayan pengesahan menyerahkan bukti kelayakan kepada pembekal pengesahan yang berkaitan.
Pembekal pengesahan menyemak kesahihan bukti kelayakan dan mengembalikan objek UserDetails yang disahkan.Tentukan sama ada untuk memberikan akses berdasarkan keputusan akses.
Kes Praktikal: Kawalan Akses Berasaskan Peranan
Konfigurasikan pengurus keputusan akses AffirmativeBased.
@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) { auth.userDetailsService(userDetailsService()); } @Override protected void configure(HttpSecurity http) { http.authorizeRequests() .antMatchers("/admin/**").hasRole("ROLE_ADMIN") .antMatchers("/user/**").hasRole("ROLE_USER") .anyRequest().permitAll(); } }
@Service public class UserDetailsServiceImpl implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username) { User user = userRepository.findByUsername(username); return new UserDetailsAdapter(user); } }UserDetailsAdapter
public class UserDetailsAdapter implements UserDetails { private final User user; public UserDetailsAdapter(User user) { this.user = user; } // ... UserDetails implementation methods ... }
Atas ialah kandungan terperinci Bagaimanakah proses pengesahan dan kebenaran Spring Security berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!