網頁

2020/4/10

Spring Security 關閉預設表單登入頁面 disable default form login page

關閉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登入設定如下。



參考:

沒有留言:

張貼留言