spring-security關(guān)閉登錄框的實(shí)現(xiàn)示例
事情要從同事的一個(gè)項(xiàng)目說(shuō)起,項(xiàng)目中需要集成公司的單點(diǎn)登錄系統(tǒng),但是無(wú)論如何都無(wú)法跳轉(zhuǎn)到正常的登錄頁(yè)面。相反,卻始終跳轉(zhuǎn)到另外一個(gè)登錄頁(yè)面。

但是代碼卻非常簡(jiǎn)單,簡(jiǎn)化一下
@Controller
public class SecurityTestController {
@GetMapping("/myLogin")
public String login() {
return "login";
}
@GetMapping("/")
public String homePage() {
return "homePage";
}
}
發(fā)現(xiàn)無(wú)論是"/myLogin"還是"/"都繞不過(guò)登錄,即使打了斷點(diǎn)也進(jìn)入不了兩個(gè)方法。
由于之前沒(méi)有接觸過(guò)securtiy,還以為是公司另外一個(gè)登錄系統(tǒng),讓同事輸入公司域賬戶和密碼,卻怎么也無(wú)法進(jìn)入。最后還是同事通過(guò)搜索"please sign in" + "spring"的關(guān)鍵詞才知道這個(gè)是securtiy。
那既然知道是spring boot 的security,那要如何登錄呢,以及要如何關(guān)閉這個(gè)登錄框呢?
第一個(gè)問(wèn)題,如何登錄?
我們從啟動(dòng)日志中,可以看到有一條這樣的日志
所以,這個(gè)就是登錄用到的密碼。那用戶名是什么呢? 這個(gè)可以進(jìn)入U(xiǎn)serDetailsServiceAutoConfiguration看看究竟。

然后繼續(xù)進(jìn)入SecurityProperties.User看看。

可以從代碼中看到,如果不做任何配置,Spring Security的User信息,name是user,而paasword是UUID,這個(gè)會(huì)在啟動(dòng)日志中打印。
在登錄框中,輸入"user" + 日志中的密碼,即可正常登錄。
定義用戶名和密碼
對(duì)于登錄名和密碼,可以通過(guò)在application.properties文件中指定
spring.security.user.name=admin spring.security.user.password=admin
第二個(gè)問(wèn)題,有沒(méi)有辦法關(guān)閉登錄?
關(guān)閉自動(dòng)配置
當(dāng)我們僅僅引入了Spring Securtiy的Starter,就發(fā)現(xiàn)訪問(wèn)會(huì)存在輸入框。一定是SpringBoot的autoConfig幫我們配置了一些東西。那么可以通過(guò)關(guān)閉Securtiy的autoConfig關(guān)閉登錄。
可以在啟動(dòng)類上添加
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
或者是在application.properties文件中添加
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration,org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
注意到我的項(xiàng)目中,除了SecurityAutoConfiguration被排除掉外,還有ManagementWebSecurityAutonConfiguration被排除,這個(gè)類是Actuator引入的。如果項(xiàng)目中有使用Actuator,那么就需要同時(shí)排除掉ManagementWebSecurityAutonConfiguration。
定制WebSecurityConfigureAdapter關(guān)閉登錄框
@Component
public class MySecurtiyConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// 正常配置其他安全相關(guān)的內(nèi)容
// 將登錄框關(guān)閉
http.formLogin().disable();
}
}
這里推薦使用第二種方式,因?yàn)橐隨pring-security肯定是有業(yè)務(wù)需要的,可以定制化登錄校驗(yàn)信息。
到此這篇關(guān)于spring-security關(guān)閉登錄框的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)spring security關(guān)閉登錄框內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring Security OAuth2集成短信驗(yàn)證碼登錄以及第三方登錄
- 詳解使用Spring Security進(jìn)行自動(dòng)登錄驗(yàn)證
- SpringBoot整合SpringSecurity和JWT的示例
- Spring Security Oauth2.0 實(shí)現(xiàn)短信驗(yàn)證碼登錄示例
- SpringBoot + SpringSecurity 短信驗(yàn)證碼登錄功能實(shí)現(xiàn)
- Spring Security登錄添加驗(yàn)證碼的實(shí)現(xiàn)過(guò)程
- 詳解Spring Security如何配置JSON登錄
- SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)
相關(guān)文章
spring bean.xml文件p標(biāo)簽使用報(bào)錯(cuò)的解決
這篇文章主要介紹了spring bean.xml文件p標(biāo)簽使用報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Springboot全局異常捕獲及try catch區(qū)別解析
這篇文章主要介紹了Springboot全局異常捕獲及try catch區(qū)別解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Java 并發(fā)編程:volatile的使用及其原理解析
下面小編就為大家?guī)?lái)一篇Java 并發(fā)編程:volatile的使用及其原理解析。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05
SpringBoot全局配置long轉(zhuǎn)String丟失精度的問(wèn)題解決
web項(xiàng)目中,Java后端傳過(guò)來(lái)的Long/long類型,前端JS接收會(huì)丟失精度。那么應(yīng)該如何解決,本文就來(lái)介紹一下幾種方法,感興趣的可以了解一下2021-08-08
Maven方式構(gòu)建SpringBoot項(xiàng)目的實(shí)現(xiàn)步驟(圖文)
Maven是一個(gè)強(qiáng)大的項(xiàng)目管理工具,可以幫助您輕松地構(gòu)建和管理Spring Boot應(yīng)用程序,本文主要介紹了Maven方式構(gòu)建SpringBoot項(xiàng)目的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
解決微服務(wù)feign調(diào)用添加token的問(wèn)題
這篇文章主要介紹了解決微服務(wù)feign調(diào)用添加token的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
myBatis組件教程之緩存的實(shí)現(xiàn)與使用
這篇文章主要給大家介紹了關(guān)于myBatis組件教程之緩存的實(shí)現(xiàn)與使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11

