簡體   English   中英

Spring Boot和安全性:如何擴展302狀態代碼的響應?

[英]Spring Boot and security: How to extend response for 302 status code?

設定:

  • Spring Boot應用程序
  • OAuth2安全性
  • ReactJS用於UI實現

用例:

  • 登錄到應用程序
  • 在同一瀏覽器中使用同一應用程序打開其他選項卡
  • 在選項卡之一中從應用程序注銷,用戶將重定向到“登錄”視圖
  • 轉到第一個選項卡(用戶已經注銷,如果刷新頁面,我將獲得登錄表單),然后執行任何觸發POST / PUT / PATCH請求的操作。 以下請求和響應的示例:

請求:

Request URL:http://localhost:8080/api/info
Request Method:PUT
Status Code:302 Found
Remote Address:[::1]:8080
Referrer Policy:no-referrer-when-downgrade
accept:application/json
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.8,sv;q=0.6,ru;q=0.4,uk;q=0.2,fr;q=0.2
Cache-Control:no-cache
Connection:keep-alive
Content-Length:66
Content-Type:application/json
Cookie:_ga=GA1.1.1868465923.1505828166; _gid=GA1.1.612220229.1507272075; session=e4oSW4Kq; prod_user_session=4d6b615f-521704; user_session=g3ggLxJDomyZ
Host:localhost:8080
mode:cors
Origin:http://localhost:8080
Pragma:no-cache
Referer:http://localhost:8080/profile
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36

響應:

Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Connection:keep-alive
Content-Length:0
Date:Fri, 06 Oct 2017 12:12:26 GMT
Expires:0
Location:http://localhost:8080/login
Pragma:no-cache
X-Content-Type-Options:nosniff
X-Frame-Options:DENY
X-XSS-Protection:1; mode=block

此響應系統觸發PUT請求到http://localhost:8080/login並失敗后,因為http://localhost:8080/login請求不允許使用PUT方法。

題:

我知道我已經注銷,所以我得到302狀態和Location:http://localhost:8080/login標頭。 對於這種情況,我想使用JSON主體擴展響應,或者至少確保對於這種情況,我將獲得401 Unauthorised狀態碼,而不是302。

如果我正確理解了您的問題,聽起來您需要通過正常的網頁加載( produces="text/html" )和AJAX調用( produces="application/json" )來的未授權請求,需要兩種不同的響應。 當前,您未經授權的AJAX呼叫將重定向到登錄頁面(這是合法頁面),因此沒有401響應代碼。 這是一個使用XML配置完成您想要的設置的示例, Spring Security Ajax登錄和@Configuration配置https://stackoverflow.com/a/27300215/1718213

更加用戶友好的另一個選項是使用Spring的WebSocket支持,將注銷事件發信號通知給給定用戶可能已經打開的所有選項卡(在所有設備和瀏覽器上),從而觸發每個選項卡重定向到登錄頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM