我正在使用 MVC-3 开发一个 Web 应用程序
我想给特定 Windows 域的用户一些特殊权限;因此我必须确定请求是否来自该特定域。
请注意,我使用的是表单身份验证。
我知道我可以通过跟踪用户的 IP 地址来做到这一点。但是有没有办法直接获取域名呢?
例如,如果用户ADomain\AUsername
在 windows 机器上登录,有没有办法得到ADomain
?
我正在使用 MVC-3 开发一个 Web 应用程序
我想给特定 Windows 域的用户一些特殊权限;因此我必须确定请求是否来自该特定域。
请注意,我使用的是表单身份验证。
我知道我可以通过跟踪用户的 IP 地址来做到这一点。但是有没有办法直接获取域名呢?
例如,如果用户ADomain\AUsername
在 windows 机器上登录,有没有办法得到ADomain
?
答案是,也许,有时。首先,只有 Internet Explorer 将凭据传递到服务器。其次,服务器必须与客户端在同一个域中,第三,两者之间不能有任何代理或其他东西。计算机和客户端也必须在同一网络上。
尽管如此,它仍然只在某些时候有效。什么版本的 IIS?如果是 IIS7 或更高版本,那么还有其他问题,您无法将表单身份验证和 windows 身份验证结合起来。如果您使用的是 IIS6,那么它可能可以完成,但这是一个巨大的痛苦。
实际上,我不会打扰.. 节省用户输入用户名和密码的工作量太大了。
您可以使用请求对象的 UrlReferrer 获取域名。
string Domain Name = Request.UrlReferrer.Host;
此外,如果您想在您的应用程序中检查请求是否来自不同的域,请尝试使用您自己的应用程序 URL 的主机名来验证 URL 引用者的主机名。请使用以下代码
(if Request.Url.Host != Request.UrlReferrer.Host)
{
}