SpringBoot telah menggunakan konfigurasi lalai untuk pengguna, dan hanya perlu memperkenalkan kebergantungan pom untuk memulakan Spring Security dengan cepat.
Tujuan: Sahkan identiti pengguna yang meminta dan sediakan akses selamat
Kelebihan: Berdasarkan Spring, mudah dikonfigurasikan, kurangkan banyak kod
Dibina -dalam kaedah kawalan akses
permitAll()
menunjukkan bahawa sesiapa sahaja dibenarkan mengakses URL yang dipadankan.authenticated()
bermakna URL yang dipadankan perlu disahkan sebelum boleh diakses.anonymous()
bermakna URL yang sepadan boleh diakses tanpa nama. Kesannya adalah serupa dengan permitAll(), kecuali URL yang ditetapkan kepada anonymous() akan melaksanakandenyAll()
dalam rantai penapis, menunjukkan bahawa URL yang dipadankan tidak dibenarkan diakses.rememberMe()
Pengguna yang "ingat saya" dibenarkan mengakses laman web ini yang serupa dengan banyak laman web tanpa log masuk selama sepuluh hari Selepas log masuk sekali, anda akan diingati , dan kemudian anda tidak perlu log masuk untuk tempoh masa pada masa hadapan.fullyAuthenticated()
Pengguna hanya boleh mengakses jika mereka tidak mengingati saya. Maksudnya, anda mesti log masuk langkah demi langkah.
Kebenaran peranan hakim
-
hasAuthority(String)
Tentukan sama ada pengguna mempunyai kebenaran khusus ditentukan oleh logik log masuk tersuai hasAnyAuthority(String ...)
Benarkan akses jika pengguna mempunyai salah satu kebenaran yang diberikanhasRole(String)
Benarkan akses jika pengguna mempunyai peranan yang diberikan. Jika tidak, 403 akan munculhasAnyRole(String ...)
Jika pengguna mempunyai salah satu daripada peranan yang diberikan, akses akan dibenarkanhasIpAddress(String)
Jika permintaan adalah IP yang ditentukan akan diakses. Anda boleh mendapatkan alamat ip melalui request.getRemoteAddr()
Reference Spring Security
Tambah
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>vipsoft-parent</artifactId> <groupId>com.vipsoft.boot</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>vipsoft-security</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.3.7</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
pada fail Pom dan kata laluan pengguna lalai akan dijana secara automatik selepas menjalankan Named: user
Konfigurasi lalai akan menjana semula kata laluan setiap kali projek dimulakan Pada masa yang sama, nama pengguna dan permintaan pemintasan tidak boleh disesuaikan. Dalam aplikasi sebenar, konfigurasi tersuai selalunya diperlukan, jadi seterusnya lakukan konfigurasi tersuai bagi Spring Security.
Konfigurasikan Spring Security (Bermula)
Konfigurasikan dua peranan pengguna (pentadbir dan pengguna) dalam ingatan (mudahkan proses dan fahami logik), tetapkan kata laluan yang berbeza
Tetapkan akses peranan pada masa yang sama Kebenaran, di mana pentadbir boleh mengakses semua laluan (iaitu /*), dan pengguna hanya boleh mengakses semua laluan di bawah /pengguna.
Sesuaikan kelas konfigurasi dan laksanakan antara muka WebSecurityConfigurerAdapter
Terdapat dua kaedah konfigurasi() yang digunakan dalam antara muka WebSecurityConfigurerAdapter
, satu daripadanya mengkonfigurasi identiti pengguna dan satu lagi mengkonfigurasi kebenaran pengguna:
package com.vipsoft.web.config; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) public class SecurityConfig extends WebSecurityConfigurerAdapter { /** * 配置用户身份的configure()方法 * * @param auth * @throws Exception */ @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); //简化操作,将用户名和密码存在内存中,后期会存放在数据库、Redis中 auth.inMemoryAuthentication() .passwordEncoder(passwordEncoder) .withUser("admin") .password(passwordEncoder.encode("888")) .roles("ADMIN") .and() .withUser("user") .password(passwordEncoder.encode("666")) .roles("USER"); } /** * 配置用户权限的configure()方法 * @param http * @throws Exception */ @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() //配置拦截的路径、配置哪类角色可以访问该路径 .antMatchers("/user").hasAnyRole("USER") .antMatchers("/*").hasAnyRole("ADMIN") //配置登录界面,可以添加自定义界面, 没添加则用系统默认的界面 .and().formLogin(); } }Tambah ujian antara muka
package com.vipsoft.web.controller; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class DefaultController { @GetMapping("/") @PreAuthorize("hasRole('ADMIN')") public String demo() { return "Welcome"; } @GetMapping("/user/list") @PreAuthorize("hasAnyRole('ADMIN','USER')") public String getUserList() { return "User List"; } @GetMapping("/article/list") @PreAuthorize("hasRole('ADMIN')") public String getArticleList() { return "Article List"; } }
Atas ialah kandungan terperinci Cara menggunakan SpringBoot SpringSecurity. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Javaremainsagoodlanguageduetoitscontinuousevolutionandrobustecosystem.1)

Javaisgreatduetoitsplatformindantrect, robustoopsupport, extensivelibraries, andstrongcommunity.1) platformindependenceviajvmallowscodetorunonvariousplatforms.2)

Lima ciri utama Java adalah polimorfisme, ekspresi lambda, streamsapi, generik dan pengendalian pengecualian. 1. Polimorfisme membolehkan objek kelas yang berbeza digunakan sebagai objek kelas asas biasa. 2. Ekspresi Lambda menjadikan kod lebih ringkas, terutama sesuai untuk mengendalikan koleksi dan aliran. 3.StreamsAPI dengan cekap memproses set data yang besar dan menyokong operasi deklaratif. 4. Generik menyediakan jenis keselamatan dan kebolehgunaan semula, dan kesilapan jenis ditangkap semasa penyusunan. 5. Pengendalian Pengecualian membantu mengendalikan kesilapan dengan elegan dan menulis perisian yang boleh dipercayai.

Java'stopfeaturessignificantelyedhanceitsperformanceAndscalability.1) Objek-OrientedPrincipleslikePolymorphismenableFlexiBleyDscalableCode.2)

Komponen teras JVM termasuk ClassLoader, Runtimedataarea dan ExecutionEngine. 1) Pemuat kelas bertanggungjawab untuk memuatkan, menghubungkan dan memulakan kelas dan antara muka. 2) Runtimedataarea mengandungi Methodarea, Heap, Stack, Pcregister dan Nativemethodstacks. 3) ExecutionEngine terdiri daripada penterjemah, Jitcompiler dan GarbageCollector, yang bertanggungjawab untuk pelaksanaan dan pengoptimuman bytecode.

Java'sSafetyandSecurityArebolsteredby: 1) Strongtyping, whichPreventStype-RelatedErrors; 2) AutomaticMemoryManagementViagriageGecollection, reducingMemory-RelatedVulnerabilities;

JavaoffersSeveralkeyfeaturesthatenHanceCodingsKills: 1) Objek-OrientedProgrammingallowSmodelingReal-Worldentities, exemplifiedBypolymorphism.2) ExceptleHandlingProvidesRobusRrormAragement.3)

TheJvmisacrucialComponentthatrunsjavacodeByTranslatingitintomachine-specificinstructions, impak, keselamatan, andporability.1) theclassloaderloads, pautan, andinitializesclasses.2)


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).
