- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- spring-security關(guān)閉登錄框的實(shí)現示例
事情要從同事的一個(gè)項目說(shuō)起,項目中需要集成公司的單點(diǎn)登錄系統,但是無(wú)論如何都無(wú)法跳轉到正常的登錄頁(yè)面。相反,卻始終跳轉到另外一個(gè)登錄頁(yè)面。
但是代碼卻非常簡(jiǎn)單,簡(jiǎn)化一下
@Controller public class SecurityTestController { @GetMapping("/myLogin") public String login() { return "login"; } @GetMapping("/") public String homePage() { return "homePage"; } }
發(fā)現無(wú)論是"/myLogin"還是"/"都繞不過(guò)登錄,即使打了斷點(diǎn)也進(jìn)入不了兩個(gè)方法。
由于之前沒(méi)有接觸過(guò)securtiy,還以為是公司另外一個(gè)登錄系統,讓同事輸入公司域賬戶(hù)和密碼,卻怎么也無(wú)法進(jìn)入。最后還是同事通過(guò)搜索"please sign in" + "spring"的關(guān)鍵詞才知道這個(gè)是securtiy。
那既然知道是spring boot 的security,那要如何登錄呢,以及要如何關(guān)閉這個(gè)登錄框呢?
第一個(gè)問(wèn)題,如何登錄?
我們從啟動(dòng)日志中,可以看到有一條這樣的日志
所以,這個(gè)就是登錄用到的密碼。那用戶(hù)名是什么呢? 這個(gè)可以進(jìn)入UserDetailsServiceAutoConfiguration看看究竟。
然后繼續進(jìn)入SecurityProperties.User看看。
可以從代碼中看到,如果不做任何配置,Spring Security的User信息,name是user,而paasword是UUID,這個(gè)會(huì )在啟動(dòng)日志中打印。
在登錄框中,輸入"user" + 日志中的密碼,即可正常登錄。
定義用戶(hù)名和密碼
對于登錄名和密碼,可以通過(guò)在application.properties文件中指定
spring.security.user.name=admin spring.security.user.password=admin
第二個(gè)問(wèn)題,有沒(méi)有辦法關(guān)閉登錄?
關(guān)閉自動(dòng)配置
當我們僅僅引入了Spring Securtiy的Starter,就發(fā)現訪(fǎng)問(wèn)會(huì )存在輸入框。一定是SpringBoot的autoConfig幫我們配置了一些東西。那么可以通過(guò)關(guān)閉Securtiy的autoConfig關(guān)閉登錄。
可以在啟動(dòng)類(lèi)上添加
@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
注意到我的項目中,除了SecurityAutoConfiguration被排除掉外,還有ManagementWebSecurityAutonConfiguration被排除,這個(gè)類(lèi)是Actuator引入的。如果項目中有使用Actuator,那么就需要同時(shí)排除掉ManagementWebSecurityAutonConfiguration。
定制WebSecurityConfigureAdapter關(guān)閉登錄框
@Component public class MySecurtiyConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { // 正常配置其他安全相關(guān)的內容 // 將登錄框關(guān)閉 http.formLogin().disable(); } }
這里推薦使用第二種方式,因為引入Spring-security肯定是有業(yè)務(wù)需要的,可以定制化登錄校驗信息。
到此這篇關(guān)于spring-security關(guān)閉登錄框的實(shí)現示例的文章就介紹到這了,更多相關(guān)spring security關(guān)閉登錄框內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站