Spring Security ialah rangka kerja keselamatan berdasarkan rangka kerja Spring Ia menyediakan satu set API ringan dan alatan untuk melaksanakan fungsi keselamatan biasa seperti pengesahan, kebenaran dan pencegahan serangan. Ia menyokong pelbagai kaedah pengesahan, seperti pengesahan asas, pengesahan borang, OAuth3.0 dan OpenID Connect, dsb. Pembangun boleh menyesuaikannya mengikut keperluan aplikasi kerana Spring Security mempunyai sejumlah besar pilihan boleh dikonfigurasikan. Spring Security telah menjadi salah satu rangka kerja keselamatan yang paling banyak digunakan untuk aplikasi perusahaan Java.
Prinsip utama Spring Security adalah untuk melindungi sumber aplikasi melalui rantai penapis. Fungsi keselamatan yang berbeza dijaga oleh penapis yang berbeza dalam rantaian penapis, seperti pengesahan, kebenaran, pertahanan serangan, dsb.
Apabila permintaan sampai ke aplikasi, ia mula dipintas oleh penapis paling luar. Penapis ini menghantar permintaan kepada penapis seterusnya dan melakukan beberapa pra-pemprosesan sebelum itu, seperti pengelogan dan pengendalian permintaan silang asal, dsb. Setiap penapis dilaksanakan secara berurutan dalam rantai penapis sehingga penapis paling dalam telah memproses permintaan dan mengembalikan respons.
Spring Security melindungi sumber aplikasi dengan mengkonfigurasi rantai penapis. Setiap penapis mempunyai tanggungjawab yang berbeza, seperti:
(1) AuthenticationFilter: Penapis pengesahan, digunakan untuk mengesahkan pengguna.
(2) Penapis Kebenaran: Penapis kebenaran, digunakan untuk menyemak sama ada pengguna mempunyai kebenaran untuk mengakses sumber.
(3) CsrfFilter: Cegah penapisan pemalsuan permintaan silang tapak (CSRF), digunakan untuk menghalang serangan CSRF.
(4) ExceptionTranslationFilter ialah penapis yang mengendalikan pengecualian berkaitan keselamatan dan bertanggungjawab untuk menukar pengecualian.
(5) SessionManagementFilter: Penapis pengurusan sesi, digunakan untuk mengurus sesi pengguna.
Pembangun boleh menyesuaikan dasar keselamatan mereka sendiri berdasarkan API dan alatan yang disediakan oleh Spring Security dan menambahkannya pada rantaian penapis. Apabila aplikasi menerima permintaan, ia akan melindungi sumbernya mengikut dasar keselamatan ini.
Tambah pergantungan
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
Konfigurasikan Spring Security
rreeeTulis kelas konfigurasi keselamatan. Tulis kelas konfigurasi keselamatan untuk mengkonfigurasi Spring Security. Kelas ini harus memanjangkan WebSecurityConfigurerAdapter dan mengatasi beberapa kaedah untuk mengkonfigurasi keselamatan.
# 设置默认用户 spring.security.user.name=user spring.security.user.password=pass # 关闭CSRF保护 spring.security.csrf.enabled=false
Dalam konfigurasi di atas, kami mengkonfigurasi pengesahan dalam memori (menggunakan nama pengguna dan kata laluan) dan keselamatan permintaan HTTP (membenarkan permintaan di bawah laluan tertentu, memerlukan pengesahan untuk semua permintaan lain dan Hidupkan log masuk dan log keluar borang ).
Tulis pengawal. Akhir sekali, anda perlu menulis pengawal untuk mengendalikan permintaan log masuk dan log keluar.
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { // 配置用户信息 @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() .withUser("user").password("{noop}pass").roles("USER"); } // 配置HTTP请求安全性 @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/public/**").permitAll() // 允许/public/**路径下的所有请求 .anyRequest().authenticated() // 所有其他请求都需要身份验证 .and() .formLogin() // 启用表单登录 .loginPage("/login") // 指定登录页面 .defaultSuccessUrl("/", true) // 登录成功后重定向到主页 .permitAll() // 允许所有用户访问登录页面 .and() .logout() // 启用注销 .logoutUrl("/logout") // 注销URL .logoutSuccessUrl("/login") // 注销成功后重定向到登录页面 .permitAll(); // 允许所有用户注销 } }
Kami mentakrifkan kaedah bernama log masuk() dalam kod untuk mengendalikan permintaan halaman log masuk dan mengembalikan templat bernama log masuk. Kaedah logout() digunakan untuk mengendalikan permintaan logout dan ubah hala ke halaman log masuk.
Tulis templat html. Akhir sekali, kita perlu menulis templat yang dipanggil login.html untuk memaparkan halaman log masuk.
rreeeeAtas ialah kandungan terperinci Cara SpringBoot menyepadukan SpringSecurity dengan cepat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!