目的:驗(yàn)證請(qǐng)求用戶的身份闯冷,提供安全訪問(wèn)
優(yōu)勢(shì):基于Spring撞牢,配置方便摆马,減少大量代碼
一性穿、SpringBoot中應(yīng)用Spring Security
- 在SpringBoot項(xiàng)目的pom中配置Spring Security:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
- 啟動(dòng)項(xiàng)目:
控制臺(tái)會(huì)輸出一個(gè)由SpringSecurity自動(dòng)生成的密碼(用戶名默認(rèn)為 user ): -
訪問(wèn)任一項(xiàng)目路徑會(huì)彈出用戶驗(yàn)證界面:
填入用戶名和密碼停蕉,驗(yàn)證成功愕鼓。
由此可見(jiàn)SpringBoot已經(jīng)為用戶采用默認(rèn)配置,只需要引入pom依賴就能快速啟動(dòng)Spring Security慧起。
然而默認(rèn)配置每次都啟動(dòng)項(xiàng)目都會(huì)重新生成密碼菇晃,同時(shí)用戶名和攔截請(qǐng)求也不能自定義,在實(shí)際應(yīng)用中往往需要自定義配置蚓挤,因此接下來(lái)對(duì)Spring Security進(jìn)行自定義配置磺送。
二、SpringBoot中配置Spring Security
目標(biāo):配置兩個(gè)用戶角色(Admin和User)灿意,設(shè)置不同密碼(存儲(chǔ)在內(nèi)存中)估灿;同時(shí)設(shè)置角色訪問(wèn)權(quán)限,其中Admin可以訪問(wèn)所有路徑(即/*)脾歧,User只能訪問(wèn)/user下的所有路徑甲捏。
-
自定義配置類(lèi),實(shí)現(xiàn)WebSecurityConfigurerAdapter接口鞭执,WebSecurityConfigurerAdapter接口中有兩個(gè)用到的 configure()方法司顿,其中一個(gè)配置用戶身份,另一個(gè)配置用戶權(quán)限:
1.1 配置用戶身份的configure()方法:
注釋:- inMemoryAuthentication()表示將用戶名和密碼存在內(nèi)存中兄纺,也可以存在數(shù)據(jù)庫(kù)或redis等緩存中
- passwordEncoder用于對(duì)密碼進(jìn)行加密
- roles是給予該用戶的后臺(tái)角色大溜,用于下面的用戶權(quán)限配置。
注釋:
- antMatchers()配置攔截的路徑
- hasAnyRole()配置哪類(lèi)角色可以訪問(wèn)該路徑
- formLogin()配置登錄界面估脆,可以添加自定義界面钦奋, 沒(méi)添加則用系統(tǒng)默認(rèn)的界面。
再次啟動(dòng)項(xiàng)目便可實(shí)現(xiàn)兩個(gè)用戶名(admin,user)登錄付材,同時(shí)兩類(lèi)用戶(Admin朦拖,User)有不同訪問(wèn)權(quán)限的效果。