spring-security關閉登錄框的實現示例
事情要從同事的一個項目說起,項目中需要集成公司的單點登錄系統,但是無論如何都無法跳轉到正常的登錄頁面。相反,卻始終跳轉到另外一個登錄頁面。
但是代碼卻非常簡單,簡化一下
@Controller public class SecurityTestController { @GetMapping("/myLogin") public String login() { return "login"; } @GetMapping("/") public String homePage() { return "homePage"; } }
發現無論是”/myLogin”還是”/”都繞不過登錄,即使打瞭斷點也進入不瞭兩個方法。
由於之前沒有接觸過securtiy,還以為是公司另外一個登錄系統,讓同事輸入公司域賬戶和密碼,卻怎麼也無法進入。最後還是同事通過搜索”please sign in” + “spring”的關鍵詞才知道這個是securtiy。
那既然知道是spring boot 的security,那要如何登錄呢,以及要如何關閉這個登錄框呢?
第一個問題,如何登錄?
我們從啟動日志中,可以看到有一條這樣的日志
所以,這個就是登錄用到的密碼。那用戶名是什麼呢? 這個可以進入UserDetailsServiceAutoConfiguration看看究竟。
然後繼續進入SecurityProperties.User看看。
可以從代碼中看到,如果不做任何配置,Spring Security的User信息,name是user,而paasword是UUID,這個會在啟動日志中打印。
在登錄框中,輸入”user” + 日志中的密碼,即可正常登錄。
定義用戶名和密碼
對於登錄名和密碼,可以通過在application.properties文件中指定
spring.security.user.name=admin spring.security.user.password=admin
第二個問題,有沒有辦法關閉登錄?
關閉自動配置
當我們僅僅引入瞭Spring Securtiy的Starter,就發現訪問會存在輸入框。一定是SpringBoot的autoConfig幫我們配置瞭一些東西。那麼可以通過關閉Securtiy的autoConfig關閉登錄。
可以在啟動類上添加
@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被排除,這個類是Actuator引入的。如果項目中有使用Actuator,那麼就需要同時排除掉ManagementWebSecurityAutonConfiguration。
定制WebSecurityConfigureAdapter關閉登錄框
@Component public class MySecurtiyConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { // 正常配置其他安全相關的內容 // 將登錄框關閉 http.formLogin().disable(); } }
這裡推薦使用第二種方式,因為引入Spring-security肯定是有業務需要的,可以定制化登錄校驗信息。
到此這篇關於spring-security關閉登錄框的實現示例的文章就介紹到這瞭,更多相關spring security關閉登錄框內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Spring Boot Admin的使用詳解(Actuator監控接口)
- 五分鐘解鎖springboot admin監控新技巧
- Java SpringBoot快速集成SpringBootAdmin管控臺監控服務詳解
- Spring Boot Admin 快速入門詳解
- Spring Boot打開URL出現signin問題的解決