最适合用于过期登录的HTTP状态(基于表单的登录)

时间:2011-08-03 09:16:15

标签: http login

我正在编写一些代码,以有用的方式响应Web应用中的过期登录。这是基于表单的登录。这是我想要决定的HTTP状态代码。

我尝试过401,但这会导致在浏览器中弹出一个身份验证对话框。我发现一些线程提到了一些Microsoft应用程序中使用的错误“440 Login Expired”,但我在W3​​C文档中找不到任何相关内容,也没有找到任何其他适合过期表单登录的代码。

用440回复是否可以 - 这是一种特殊的标准吗?或者是否有其他人使用的更好的代码?或者只是为应用程序制作一个?

非常感谢!

1 个答案:

答案 0 :(得分:0)

这可能是与Correct HTTP status code for login form?密切相关的问题。无论您的登录名已过期还是从未登录过,都无济于事。

在另一个问题上给出的答案:

  1. 400-接受的答案,我非常不同意。
  2. 401-具有WWW-Authenticate标头,该标头可能包含任何内容,没关系,如果您在此处不进行基本或摘要身份验证挑战,浏览器应(!?)忽略它。

但是我所缺少的是关于如何交付登录表单的真正区别。可以是 *作为对当前请求的响应而注入(这就是401答案建议执行的操作) *或以重定向方式交付,例如302进入登录页面,完成对话后,该页面将重定向回原始请求。

我使用302重定向到登录页面已经运行了10年。但是我不再喜欢它了。我想返回401,以便我的脚本代理,REST等能够正确执行其工作。

因此,要真正解决这个问题,需要做的是检查当浏览器获得带有WWW-Authentication标头的401响应时(没有摘要或基本挑战)时浏览器的行为。如果他们总是进行对话,那么无论我们认为哪种方法正确正确,这都是不可行的。

我还需要发送带有Location:标头的401,并查看浏览器是否会重定向。