我正在使用普通的(我认为是标准的)PHP NTLM:
$headers = apache_request_headers();
if (!isset($headers['Authorization'])) {
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: NTLM');
exit;
}
$auth = $headers['Authorization'];
if (substr($auth,0,5) == 'NTLM ') {
....
}
我注意到,如果用户登录到他的Windows域,我的脚本将被吊销3次(检测到NTLM凭据)。但是,如果NTLM失败,浏览器将显示登录表单。
现在,我不需要此登录表单。我需要检测NTLM凭据是否失败,而不是显示登录表单,而是要重定向到其他页面(例如,对不起,您不是域用户)。
如果我将代码更改为此,即使具有有效NTLM凭据的用户也将被重定向:
$headers = apache_request_headers();
if (!isset($headers['Authorization'])) {
redirect to other page
}
$auth = $headers['Authorization'];
if (substr($auth,0,5) == 'NTLM ') {
....
}