代码之家  ›  专栏  ›  技术社区  ›  Luca Matteis

HTTP身份验证-如何使用户覆盖身份验证数据?

  •  0
  • Luca Matteis  · 技术社区  · 14 年前

    我知道我无法注销HTTP身份验证。

    覆盖整个 Location: http://logout:byebye@yourserver.example.com/ 除了IE,这种方法在大多数浏览器上都有效。

    不过,我想知道是否可以让用户覆盖身份验证数据。

    假设用户在浏览器中有一些身份验证数据,现在他们转到我的/注销页面,然后它返回401头,这样身份验证窗口就会弹出,并且他们可以覆盖它。

    然而 ,当他们单击OK(auth数据现在在浏览器中被覆盖)时,/logout页面将重新加载,我无法 验证 新数据,因为我单击“确定”后页面将重新加载,它将再次运行auth头,并再次显示弹出窗口。

    所以,基本上,如果浏览器中已经设置了一些数据,我如何验证HTTP认证数据?

    1 回复  |  直到 14 年前
        1
  •  1
  •   bobince    14 年前

    当他们单击OK(auth数据现在在浏览器中被覆盖)时,/logout页面会重新加载,我无法验证新数据。

    您只需对提交的数据进行反向验证:如果用户提供了正确的身份验证,则返回401响应;如果用户提供了错误的身份验证或没有身份验证,则返回200或302以指示新的错误/没有身份验证已被接受。然后,浏览器将继续为将来的请求使用bad/no auth。

    添加一些类似于__的说明,单击此处,然后输入无用户名或密码,然后单击OK_,如果HTTP基本身份验证的注销功能稍显亮丽,那么您就拥有了一个可行的功能。

    (假设您自己从脚本中吐出auth头,这很容易;如果您使用Web服务器的身份验证处理功能,则通常不可能提取这些头。)