NTLM Auth 没有提示要求有效用户和 PHP
NTLM Auth without prompt for require valid-user and PHP
如果找不到有效用户,我想重定向到不显示 htaccess 提示的登录页面
我有一个有效的 htaccess 授权
AuthName "My name"
NTLMBasicRealm "DOM"
NTLMAuth on
NegotiateAuth off
NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp"
NegotiateAuthHelper "/usr/bin/ntlm_auth --helper-protocol=gss-spnego"
NTLMBasicAuthoritative on
AuthType NTLM
AuthType Negotiate
Require valid-user
ErrorDocument 401 /index.php
只要找到有效用户,就会将 Windows 名称设置为 $_SERVER['REMOTE_USER']。
如果没有弹出 htaccess 提示,您需要手动取消它才能重定向
如果我删除 Require valid-user,$_SERVER['REMOTE_USER'] 为空。
有没有一种方法可以对用户进行身份验证,但如果没有自动找到重定向而不提示?
Windows 身份验证的第一步是向浏览器返回 HTTP 401 响应。如果站点受信任,浏览器将自动发送当前用户的凭据。如果不是,浏览器会提示输入凭据。没有办法改变这种行为。
但是您可以稍微重构一下您的网站。我在 another answer 中描述了如何在后台尝试 Windows 身份验证并回退到表单身份验证。该答案特定于 ASP.NET,但同样的事情也可以用 PHP 和 Apache 来完成(虽然我不能告诉你具体怎么做)。
基本思路是:
- 您网站的主要身份验证机制是表单身份验证。
- 在您的登录页面上,首先隐藏页面上的所有内容。
- 在您的登录页面上,向配置为 Windows 身份验证的 URL 发出 AJAX 请求。
- 在服务器端,如果 URL 的身份验证成功,您将执行与成功登录表单相同的操作(通常是设置 cookie)。
- 在您的登录页面上,如果 AJAX 请求成功,您会将用户转到他们想要的页面。
- 如果 AJAX 请求失败,请在登录页面上显示所有内容,他们可以在那里输入用户名和密码。
如果找不到有效用户,我想重定向到不显示 htaccess 提示的登录页面
我有一个有效的 htaccess 授权
AuthName "My name"
NTLMBasicRealm "DOM"
NTLMAuth on
NegotiateAuth off
NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp"
NegotiateAuthHelper "/usr/bin/ntlm_auth --helper-protocol=gss-spnego"
NTLMBasicAuthoritative on
AuthType NTLM
AuthType Negotiate
Require valid-user
ErrorDocument 401 /index.php
只要找到有效用户,就会将 Windows 名称设置为 $_SERVER['REMOTE_USER']。 如果没有弹出 htaccess 提示,您需要手动取消它才能重定向
如果我删除 Require valid-user,$_SERVER['REMOTE_USER'] 为空。
有没有一种方法可以对用户进行身份验证,但如果没有自动找到重定向而不提示?
Windows 身份验证的第一步是向浏览器返回 HTTP 401 响应。如果站点受信任,浏览器将自动发送当前用户的凭据。如果不是,浏览器会提示输入凭据。没有办法改变这种行为。
但是您可以稍微重构一下您的网站。我在 another answer 中描述了如何在后台尝试 Windows 身份验证并回退到表单身份验证。该答案特定于 ASP.NET,但同样的事情也可以用 PHP 和 Apache 来完成(虽然我不能告诉你具体怎么做)。
基本思路是:
- 您网站的主要身份验证机制是表单身份验证。
- 在您的登录页面上,首先隐藏页面上的所有内容。
- 在您的登录页面上,向配置为 Windows 身份验证的 URL 发出 AJAX 请求。
- 在服务器端,如果 URL 的身份验证成功,您将执行与成功登录表单相同的操作(通常是设置 cookie)。
- 在您的登录页面上,如果 AJAX 请求成功,您会将用户转到他们想要的页面。
- 如果 AJAX 请求失败,请在登录页面上显示所有内容,他们可以在那里输入用户名和密码。