【发布时间】:2018-03-18 09:07:51
【问题描述】:
设置:
- Spring Boot 应用程序
- OAuth2 安全性
- 用于 UI 实现的 ReactJS
用例:
- 登录应用程序
- 在同一浏览器中打开具有相同应用程序的其他选项卡
- 在其中一个选项卡中从应用程序注销,用户被重定向到登录视图
- 转到第一个选项卡(用户已经注销,如果我刷新页面,我将获得登录表单)并执行任何触发 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 标头,因为我已经注销。我想用 JSON 正文扩展这种情况下的响应,或者至少确保在这种情况下我会得到401 Unauthorised 状态码而不是 302。
【问题讨论】:
标签: java spring http spring-boot oauth-2.0