我在MVC应用程序中实现OAuth 2.0协议。除了一件事以外,一切似乎都按预期进行。
当用户在完成交换端点后被重定向到他们的应用程序时,我如何处理浏览器返回按钮的场景?问题是浏览器缓存了state
和code
参数,显然code
已经交换了。
我总是可以使用一些保护代码来查看是否抛出异常以将用户发送回原始的登录流程,这将使他们重定向到默认页面,因为已经有SSO会话。我不确定这是不是一个合适的解决方案。
对于信息,我正在使用Identity Server和react, angular, mvc应用程序的混合。
在做了更多的研究之后,我发现您可以使用303
而不是302
状态码,在这种情况下,浏览器不应该不缓存每个规范的第一个重定向。
然而,根据302部分的说明,大多数现代浏览器实现302
就像303
重定向一样,并且不缓存响应。
解决方案是,我开始添加cache control
头与no-cache
值到我的302重定向和浏览器不带我回到以前的重定向。
以下是我从https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
获取的文档:我使用302
而不是303
,因为我有多个重定向和文档声明,在303
中,第一个重定向不应该被缓存,这意味着所有其他的将被忽略。