我正在使用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>`)
}
答案 0 :(得分:0)
NTLM仅在将其用于SSO时才有意义(无需手动输入凭据)。
在您的情况下,我建议您创建自己的用户名/密码表单,然后使用一些Active Directory / LDAP模块针对域控制器进行身份验证。如果成功,则用户将登录,否则您将显示一个错误,用户可以重试。
如果还附带支持NTLM的浏览器(例如IE),您还可以将它们组合并使用express-ntlm
,否则显示登录表单。我认为这对您的用户来说将是最大的好处和最好的用户体验。