这个问题不是关于何时一般使用GET或POST; 它是关于处理Web应用程序注销的推荐方法.我已经在一般意义上找到了关于GET和POST之间差异的大量信息,但我没有找到这个特定场景的明确答案.
作为一个实用主义者,我倾向于使用GET,因为实现它比POST更简单; 只需删除一个简单的链接就可以了.这似乎是我能想到的绝大多数网站的情况,至少从头脑中可以看出来.甚至Stack Overflow也可以使用GET进行注销.
让我犹豫不决的是(尽管很老)一些论点,即一些网络加速器/代理通过访问和检索他们在页面中找到的每个链接来预先缓存页面,因此用户在点击它们时会得到更快的响应.我不确定这是否仍然适用,但如果是这种情况,那么从理论上讲,一旦有用这种加速器的用户在登录后就会被赶出应用程序,因为她的加速器会找到并检索注销链接,即使她从未点击过它.
到目前为止我所阅读的所有内容都建议POST应该用于"破坏性操作",而不改变应用程序内部状态的操作(如查询等)应该用GET处理.基于此,这里真正的问题是:
从应用程序注销被视为破坏性操作/是否会改变应用程序的内部状态?
我尝试自己构建此应用程序,但是在此过程中遇到了几个绊脚石。我认为最好退后一步,更广泛地了解我尝试创建的内容。似乎没有任何关于如何制作所需内容的文档。(除非有人可以指出我可能错过的正确位置)
最终,我想要的是让Blazor(服务器端)应用程序进行API调用以使用应用程序中的数据,然后让IdentityServer4封装身份验证。我需要具有Azure以及ASP.net Identity作为可能的身份验证方法。
我已经尝试过并且能够创建一个也具有本地API的IdentityServer4。我可以致电Postman来获取令牌等。但是,在将Blazor(服务器端)应用程序与IdentityServer4绑定时,我很困惑。
我试图具体地问这个问题,但是根本没有得到任何结果。我希望从更大的角度来看可能会有所帮助。
看来odic-client.js是从IdentityServer4回调中获取数据的方法,但是,这似乎与Blazor(服务器端)中的.NET授权没有很好的结合。我如何使它们一起工作。