我正在使用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>`)
}发布于 2019-05-26 22:06:26
NTLM只有在用于SSO时才有意义(无需手动输入凭据)。
在您的情况下,我建议您创建自己的用户名/密码表单,然后使用一些Active Directory / LDAP模块对域控制器进行身份验证。如果成功,用户将登录,否则将显示错误,用户可以重试。
如果出现支持NTLM的浏览器(例如IE),您也可以将它们组合在一起并使用express-ntlm,否则将显示登录表单。在我看来,这对你的用户来说是最大的好处和最好的用户体验。
https://stackoverflow.com/questions/54131207
复制相似问题