重定向在Safari和Firefox上不起作用

时间:2019-01-10 14:49:55

标签: javascript firefox safari ntlm express-ntlm

我正在使用express-ntlm对我的应用程序上的用户进行身份验证。对于Mac OS,浏览器要求输入用户名和密码,当用户输入错误的密码时,它会显示一个带有禁止消息的页面。我在自定义库上覆盖了forbidden函数,因此我可以将用户重定向到当前URL,以便他们可以再次插入用户名和密码。由于某种原因,它在Chrome上有效,但在Firefox或Safari上无效,它只是不断刷新页面,而不会提示用户输入用户名和密码。好像浏览器正在存储登录失败的尝试,并且不允许您再次尝试。

forbidden: function(req,res){
    res
      .status(401)
      .send(`<!DOCTYPE html><html><head><body>
      <h2>Login failed, Please try again.</h2></body></head>
      <script>
      window.setTimeout(function() {
        window.location.href = '${req.url}';
      }, 1000);
      </script></html>`)
  }

1 个答案:

答案 0 :(得分:0)

NTLM仅在将其用于SSO时才有意义(无需手动输入凭据)。

在您的情况下,我建议您创建自己的用户名/密码表单,然后使用一些Active Directory / LDAP模块针对域控制器进行身份验证。如果成功,则用户将登录,否则您将显示一个错误,用户可以重试。

如果还附带支持NTLM的浏览器(例如IE),您还可以将它们组合并使用express-ntlm,否则显示登录表单。我认为这对您的用户来说将是最大的好处和最好的用户体验。