gpt4 book ai didi

java - Spring Boot 和安全 : How to extend response for 302 status code?

转载 作者:行者123 更新时间:2023-12-02 12:10:05 26 4
gpt4 key购买 nike

设置:

  • Spring Boot 应用
  • OAuth2 安全性
  • 用于 UI 实现的 ReactJS

用例:

  • 登录应用程序
  • 在同一浏览器中使用同一应用程序打开其他选项卡
  • 从其中一个选项卡中的应用程序注销,用户将被重定向到登录 View
  • 转到第一个选项卡(用户已经注销,如果我刷新页面,我将获得登录表单)并执行任何触发 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

在此响应之后,系统触发对 http://localhost:8080/login 的 PUT 请求并失败,因为 http://localhost:8080/login 不允许使用 PUT 方法> 请求。

问题:

我知道我收到了 302 状态和 Location:http://localhost:8080/login header ,因为我已经注销了。我希望使用 JSON 正文扩展此情况的响应,或者至少确保在这种情况下我将获得 401 Unauthorized 状态代码而不是 302。

最佳答案

如果我正确理解你的问题,听起来你需要两种不同的响应来处理通过常规网页加载 (products="text/html") 与 AJAX 调用 ( Produces =“application/json”)。目前,您未经授权的 AJAX 调用会被重定向到登录页面,该页面是合法页面,因此没有 401 响应代码。以下是使用 XML 配置完成您想要的设置的示例 Spring Security Ajax login和@Configuration配置https://stackoverflow.com/a/27300215/1718213

另一个对用户更加友好的选项是使用 Spring 的 WebSocket 支持向给定用户可能打开的所有选项卡(跨所有设备和浏览器)发出注销事件信号,这将触发每个选项卡重定向到登录页面.

关于java - Spring Boot 和安全 : How to extend response for 302 status code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46607777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com