SpringBoot與spring security的結(jié)合的示例
權(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),但是作為演示還是夠用的。
好了廢話不多說(shuō),上pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</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-security</artifactId> </dependency>
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í)有所幫助,也希望大家多多支持腳本之家。
- Ajax登陸使用Spring Security緩存跳轉(zhuǎn)到登陸前的鏈接
- SpringBoot+SpringSecurity處理Ajax登錄請(qǐng)求問(wèn)題(推薦)
- Spring Security使用中Preflight請(qǐng)求和跨域問(wèn)題詳解
- Spring Boot整合Spring Security簡(jiǎn)單實(shí)現(xiàn)登入登出從零搭建教程
- 詳解spring security之httpSecurity使用示例
- SpringBoot結(jié)合SpringSecurity實(shí)現(xiàn)圖形驗(yàn)證碼功能
- SpringBoot + Spring Security 基本使用及個(gè)性化登錄配置詳解
- 詳解如何在spring boot中使用spring security防止CSRF攻擊
- Spring Security OAuth2集成短信驗(yàn)證碼登錄以及第三方登錄
- 詳解利用spring-security解決CSRF問(wèn)題
- Spring Boot整合Spring Security的示例代碼
- 深入淺析 Spring Security 緩存請(qǐng)求問(wèn)題
相關(guān)文章
SpringMVC中Json數(shù)據(jù)格式轉(zhuǎn)換
本文主要介紹了SpringMVC中Json數(shù)據(jù)格式轉(zhuǎn)換的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03Java長(zhǎng)度不足左位補(bǔ)0的3種實(shí)現(xiàn)方法
這篇文章主要介紹了Java長(zhǎng)度不足左位補(bǔ)0的3種實(shí)現(xiàn)方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Java中easypoi導(dǎo)入excel文件列名相同的處理方案
這篇文章主要介紹了Java中easypoi導(dǎo)入excel文件列名相同的處理方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06微服務(wù)架構(gòu)設(shè)計(jì)RocketMQ進(jìn)階事務(wù)消息原理詳解
這篇文章主要介紹了為大家介紹了微服務(wù)架構(gòu)中RocketMQ進(jìn)階層面事務(wù)消息的原理詳解,有需要的朋友可以借鑒參考下希望能夠有所幫助2021-10-10