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