關閉Spring Security的預設登入頁面方式如下。
範例環境:
- Java 11
- Spring Boot 2.2.4.RELEASE
- Maven
請先參考Spring Boot + Spring Security的基本設定。
Spring Boot的application.properties
設定如下,所以應用程式本機的環境目錄為http://localhost:8080/demo/
。
application.properties
#context path
server.servlet.context-path=/demo
#port
server.port=8080
DemoController
類設定要被存取的路徑及返回字串。
DemoController
package com.abc.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoController {
@GetMapping(value = "/")
public String demo() {
return "Spring Boot + Spring Security Configuration Demo";
}
}
在Spring Security的自訂配置類DemoWebSecurityConfig
透過FormLoginConfigurer.disable()
關閉預設登入頁面。
DemoWebSecurityConfig
package com.abc.demo.config.security;
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 DemoWebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest()
.authenticated()
.and().formLogin().disable() // <-- 停用預設登入頁面
.httpBasic(); // <--保留HTTP Basic驗證
}
}
設定完啟動專案在瀏覽器輸入http://localhost:8080/demo
存取DemoController
的資源時就不會開啟預設的表單登入頁面,而是跳出HTTP Basic認證的對話視窗。
透過Postman以HTTP Basic Auth登入設定如下。
參考:
沒有留言:
張貼留言