Spring Security H2Database 403 或登錄出現(xiàn)頁(yè)面空白

前言

  • 此文也是自己在編程上遇到問(wèn)題的一些記錄,希望能給大家?guī)?lái)一些幫助??

問(wèn)題

Spring Boot 啟用 Spring Security 以后發(fā)現(xiàn) H2 Database 的控制臺(tái)登陸頁(yè)面是無(wú)法訪問(wèn)的。

情況 1 :

能進(jìn)去控制臺(tái)的登陸頁(yè)面(輸入數(shù)據(jù)庫(kù)用戶名和密碼的頁(yè)面),但是登陸以后出現(xiàn)白標(biāo)簽頁(yè)錯(cuò)誤( White Label Error ) ,返回碼是 403

白標(biāo)簽頁(yè)錯(cuò)誤403.png

情況 2 :

能進(jìn)去控制臺(tái)的登陸頁(yè)面(輸入數(shù)據(jù)庫(kù)用戶名和密碼的頁(yè)面),但是登陸以后出現(xiàn)界面是無(wú)法顯示(空白頁(yè)面)。

原因分析

因?yàn)槭菃⒂?Spring Security 以后出現(xiàn)的問(wèn)題,問(wèn)題根源可能就是 Spring Security 的安全配置問(wèn)題。我們可以去開(kāi)啟 Spring Security 的 debug 日志,查看日志分析原因,但是詳細(xì)的分析這里就不細(xì)說(shuō)了。

Spring Boot 在配置文件啟用 Security 模塊的日志輸出如下,具體是設(shè)置 org.springframework.security 包的日志輸出級(jí)別為debug

logging:
  level:
    root: info
    com.hdfg159: debug
    org:
      springframework:
        web: debug
        security: debug

解決方案

根據(jù)上面的日志輸出,我們可以得到問(wèn)題的根源。

情況 1 :

Spring Security 默認(rèn)開(kāi)啟了 CSRF 的保護(hù),H2Database 相關(guān)的請(qǐng)求需要攜帶 CSRF Token 及相關(guān)參數(shù),所以訪問(wèn)時(shí)候出現(xiàn)了 403 。

方案 1 :

我們可以去修改 Spring Security 的相關(guān)安全配置,把 CSRF 保護(hù)關(guān)掉,編寫(xiě)安全配置文件繼承 WebSecurityConfigurerAdapter 并覆寫(xiě) protected void configure(HttpSecurity http) throws Exception 方法,加入以下代碼:

http.csrf().disable();

不過(guò)不建議這樣做,安全性不高。

方案 2 :

操作同方案 1 ,但是配置項(xiàng)寫(xiě)法不一樣,具體代碼如下(
/h2-console 是配置好的 H2Database 控制臺(tái)訪問(wèn)路徑):

http.csrf().ignoringAntMatchers("/h2-console/**")

情況2:

Spring Security 默認(rèn)頁(yè)面不允許 iframe (不安全),會(huì)在響應(yīng)頭返回:

X-Frame-Options:DENY

導(dǎo)致 H2Database 訪問(wèn)頁(yè)面空白,解決方案也是有兩種,同理情況 1 中配置 CSRF 的方式。

方案 1 :

禁用 frameOptions(),具體代碼如下:

http.headers().frameOptions().disable();
方案 2 :

允許同源使用 iframe ,具體代碼如下:

http.headers().frameOptions().sameOrigin();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容