如何确定用户是否从互联网或内部网访问我的应用程序?干净的方式来识别来自内部网或互联网的用户
我很关心IIS服务器变量的来源和安全性。例如, http://msdn.microsoft.com/en-us/library/ms524602.aspx 对于远程用户是否为Request.ServerVariables [“AUTH_USER”]为空?
此外,在http://msdn.microsoft.com/en-us/library/system.environment.userdomainname.aspx 上Environment.UserDomainName的文档让我觉得这是可以通过命名计算机名称等于我检查
理想的域名到游戏这个,我只是想...
if ([ ... user is not remote ... ] && Enironment.UserDomainName == "TargetLocalDomainName")
var username = Environment.UserName;
PrepareLocalUserSession(username);
RedirectToHomePage();
}
//else
[... redirect to remote login page ...]
所以我的问题是我如何确定用户是否从远程目标?如果可能的话,我宁愿使用比IP检查更少杂乱的东西。
感谢
编辑
我以为我上面的方法是太可怕了,我想发布一个理智的方式
var hostAddress = System.Web.HttpContext.Current.Request.UserHostAddress;
bool localUser = hostAddress.StartsWith("192.") | hostAddress.StartsWith("10.") | hostAddress.StartsWith("172.") || HttpRequest.Current.Request.IsLocal;
string username = Request.ServerVariables["LOGON_USER"].split(new char[]{"/"})[0];
string domain = Request.ServerVariables["LOGON_USER"].split(new char[]{"/"})[1];
if(localUser && domain == "TargetLocalDomainName"){
PrepareLocalUserSession(username);
RedirectToHomePage();
}
//else
[... redirect to remote login page ...]
注意自己:如果使用IP方法,也允许本地调试请求,以及=>'HttpRequest.Current.Request.IsLocal | ' – user1778606