權(quán)限控制,也是我們?cè)偃粘i_(kāi)發(fā)中經(jīng)常遇到的場(chǎng)景,需要根據(jù)用戶的角色決定是否可以看到某個(gè)資源。目前,市面上此類框架主要有shiro與我們今天要講到的spring security。關(guān)于權(quán)限的控制有復(fù)雜的控制,例如幾乎每個(gè)公司都有單點(diǎn)登錄系統(tǒng),根據(jù)用戶名來(lái)到數(shù)據(jù)庫(kù)中拿到對(duì)應(yīng)的權(quán)限,在展示該權(quán)限下能看到的資源。還有一種就是簡(jiǎn)單的控制,也就是我們今天所要提到的。將賬號(hào),密碼,角色配置到代碼中,也可以進(jìn)行簡(jiǎn)單的控制,缺點(diǎn)不言而喻,擴(kuò)展性不好,只有固定的賬號(hào),但是作為演示還是夠用的。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比十堰網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式十堰網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋十堰地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
好了廢話不多說(shuō),上pom
org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-security
spring-boot-starter-security里面包裝了spring security所需要的依賴。不需要我們一個(gè)個(gè)的配置,簡(jiǎn)化了我們的操作,節(jié)省了我們的時(shí)間,不得不說(shuō),這些企業(yè)級(jí)框架考慮的就是很周到,如果我們自己添加jar,可能會(huì)因?yàn)榘姹局g的不兼容而爆出各種問(wèn)題,這都是題外話,贊嘆一下,我們繼續(xù)??聪屡渲妙?/p>
package com.shuqi; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; 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; @EnableWebSecurity public class SecurityConfig { @Configuration public static class WebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable(); http .authorizeRequests() .antMatchers( "/index" ).hasRole("ADMIN") .anyRequest().permitAll() .and() .httpBasic() ; } } }
這段配置翻譯成中文是:對(duì)于訪問(wèn)/index這個(gè)鏈接需要ADMIN權(quán)限,其他的全都都允許。有的時(shí)候我們只會(huì)注意代碼,其實(shí)這個(gè)注解@EnableWebSecurity會(huì)重要更多,因?yàn)樗莝pring security的開(kāi)始,他引入了諸多的配置類,才使得security生效。我們?cè)O(shè)置了ADMIN權(quán)限,但是沒(méi)有設(shè)置ADMIN權(quán)限對(duì)應(yīng)的用戶名密碼,所以看下配置文件
security: user: name: root password: root role: ADMIN
配置都差不多了,看一眼我們的Controller
package com.shuqi.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @RequestMapping("/index") public String index(){ return "hello world index"; } @RequestMapping("/index1") public String index1(){ return "hello world index1"; } }
一個(gè)被攔截的/index,一個(gè)不會(huì)被攔截的/index1,看下區(qū)別。啟動(dòng)項(xiàng)目,訪問(wèn)/index
可以看到已經(jīng)加了訪問(wèn)控制,輸入配置的root,root
可以看到結(jié)果
輸入/index1可以直接看到結(jié)果
說(shuō)明我們的配置生效了,spring security確實(shí)幫助我們做到了訪問(wèn)的控制。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。